读取整数文件,只得零

时间:2014-09-30 17:49:54

标签: java file-io

所以,在我的程序中,我应该从一个文本文件中读取整数,以制作一个按键列出的数组。很容易,除了当我阅读文件时,我得到的只是零。 文件本身如下所示:

10111

86 78 95

20222

81 73 87

30333

71 63 77

40444

62 58 67

50555

51 62 48

我目前的代码是:

    File stuff = new File("TheData.txt");
    int [] temp = new int[36];
    int spine =0;
    try {
        Scanner sc = new Scanner(stuff);
        while(sc.hasNextInt()){
                temp[spine++] = sc.nextInt();
                System.out.println("" + temp[spine]);
            }

    } catch (FileNotFoundException ex) {
        Logger.getLogger(ProgramDriver3.class.getName()).log(Level.SEVERE, null, ex);
    }

我正在尝试将这些数字读入临时数组中,以便我可以将它们分类到它们应该去的地方(长的是学生ID,短的是测试分数)。但是当我尝试运行这个东西时,我得到的只是

运行:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
BUILD SUCCESSFUL (total time: 1 second)

我不完全确定出了什么问题

2 个答案:

答案 0 :(得分:1)

当你将数值放入数组时,你正在递增spine,所以当你打印出temp[spine]时,你就会打印下一个,你已经没有了。 t填充了!

更改此

    while(sc.hasNextInt()){
            temp[spine++] = sc.nextInt();
            System.out.println("" + temp[spine]);
        }

    while(sc.hasNextInt()){
            temp[spine] = sc.nextInt();
            System.out.println("" + temp[spine]);
            spine++;
        }

答案 1 :(得分:1)

在您已经增加索引后,您将在索引处打印出该数字。更改print语句以打印索引而不增加。

System.out.println(temp[spine-1]);

此外,您已在阵列上设置独立于输入文件的长度。我会使用List,以便在读取太大的文件时,文件中的整数数不会导致ArrayIndexOutOfBoundsException。

List<Integer> list = new ArrayList<Integer>(36);
while (sc.hasNextInt()) {
    list.add(sc.nextInt());
}
System.out.println(list);