Java 读取一个整数文件,除了零什么也得不到

Java 读取一个整数文件,除了零什么也得不到,java,file-io,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

所以,在我的程序中,我应该从一个文本文件中读取整数,从而生成一个列有键的数组。很简单,除非当我读到文件时,我什么都得不到,只有零。 文件本身如下所示:

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,短的是考试分数)。但是,当我试着运行它时,我得到的只是

运行:


我不完全确定哪里出了问题

当你将值放入数组时,你正在增加
spine
,所以当你打印出
temp[spine]
时,你正在打印下一个,你还没有填好

改变这个

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


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

System.out.println(temp[spine-1]);
另外,您已经在数组上设置了独立于输入文件的长度。我会使用一个列表,这样文件中的整数数量在读取过大的文件时不会导致ArrayIndexOutOfBoundsException

List<Integer> list = new ArrayList<Integer>(36);
while (sc.hasNextInt()) {
    list.add(sc.nextInt());
}
System.out.println(list);
List List=newarraylist(36);
while(sc.hasnetint()){
添加(sc.nextInt());
}
系统输出打印项次(列表);

这就是为什么不应该在其他操作中使用增量操作的原因。把它们分成几行,这样你就能确切地了解发生了什么。如果他不想再把它们打印出来并在那一行加上注释怎么办。然后,increment语句将被注释掉,所有的值将存储在索引0中。@Strikeskids是的,我想知道这一点。我将据此进行编辑。
System.out.println(temp[spine-1]);
List<Integer> list = new ArrayList<Integer>(36);
while (sc.hasNextInt()) {
    list.add(sc.nextInt());
}
System.out.println(list);