为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MYYA 2021-09-03 16:30:58
我是一名新的 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 800450  845  12001800 250  4000    1500 1800600  500  1000700  1400 1700675  400  900程序编译没有错误,但是当我尝试运行它时,三个数组中的每个值都显示为 0。我觉得这个问题可能是一些微不足道的问题,比如我的参数和格式错误,或者我可能搞砸了我将文件读入数组的方式。然而,任何关于我在哪里搞砸的见解或关于将来如何处理类似任务的建议都将不胜感激。感谢您的时间。
查看完整描述

2 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

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


查看完整回答
反对 回复 2021-09-03
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

欢迎杰克,该代码看起来不错,但对于提供的文件/数据却无法正常工作。如果仔细观察,数字之间有不止一个空格。你在每个空间上夹着一条线String [] words = line.split(" "),它给你一个比你预期的更大的数组。


这种“任务”的更好方法是使用Scanner.next(),这将忽略所有空格。

尝试用以下代码替换您的代码:


        while(scnr.hasNext()){

            b[day]  = scnr.nextInt();

            l[day]  = scnr.nextInt();

            d[day]  = scnr.nextInt();

            day++;

        }


查看完整回答
反对 回复 2021-09-03
  • 2 回答
  • 0 关注
  • 172 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信