尝试使用多个一维数组,同时还使用 Java 读取文件

我是一名新的 Java 程序员,目前正在开始学习如何读取文件。我正在从事一项活动,我需要在一个单独的方法中将文本文件中的数字读取到整数数组中,然后在 main 方法中从三个数组中的每一个添加值。


这是我到目前为止所拥有的:


import java.util.Scanner;

import java.io.File;

import java.io.FileNotFoundException;


public class FileToArrays{

    public static void main(String[] args){

        int[] b = new int [7];

        int[] l = new int [7];

        int[] d = new int [7];

        readFile(b, l, d);


        System.out.println("Sum of First Numbers: "+(b[0]+l[0]+d[0]));

        System.out.println("Sum of Second Numbers: "+(b[1]+l[1]+d[1]));

        System.out.println("Sum of Third Numbers: "+(b[2]+l[2]+d[2]));

        System.out.println("Sum of Fourth Numbers: "+(b[3]+l[3]+d[3]));

        System.out.println("Sum of Fifth Numbers: "+(b[4]+l[4]+d[4]));

        System.out.println("Sum of Sixth Numbers: "+(b[5]+l[5]+d[5]));

        System.out.println("Sum of Seventh Numbers: "+(b[6]+l[6]+d[6]));

        System.out.println("");

    }


    static void readFile(int[] b, int[] l, int[] d){

        try{

            Scanner scnr = new Scanner(new File("Input.txt"));

            int day = 0;

            while(scnr.hasNextLine()){

                String line = scnr.nextLine();

                String [] words = line.split(" ");

                b[day]  = Integer.parseInt(words [0]);

                l[day]  = Integer.parseInt(words [1]);

                d[day]  = Integer.parseInt(words [2]);

                day++;

            }

            scnr.close();

        }catch(FileNotFoundException e){

            System.out.println("Unable To Find File");

        }

    }

}

我读入数组的数字的文本文件(“Input.txt”)格式为:


800  1000 800

450  845  1200

1800 250  400

0    1500 1800

600  500  1000

700  1400 1700

675  400  900

程序编译没有错误,但是当我尝试运行它时,三个数组中的每个值都显示为 0。


我觉得这个问题可能是一些微不足道的问题,比如我的参数和格式错误,或者我可能搞砸了我将文件读入数组的方式。


然而,任何关于我在哪里搞砸的见解或关于将来如何处理类似任务的建议都将不胜感激。


感谢您的时间。


MYYA
浏览 173回答 2
2回答

慕容3067478

为输入文件提供绝对路径(如“C:/Users/input.txt”),它会正常工作。

慕勒3428872

欢迎杰克,该代码看起来不错,但对于提供的文件/数据却无法正常工作。如果仔细观察,数字之间有不止一个空格。你在每个空间上夹着一条线String [] words = line.split(" "),它给你一个比你预期的更大的数组。这种“任务”的更好方法是使用Scanner.next(),这将忽略所有空格。尝试用以下代码替换您的代码:        while(scnr.hasNext()){            b[day]  = scnr.nextInt();            l[day]  = scnr.nextInt();            d[day]  = scnr.nextInt();            day++;        }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java