在数组中读取和存储整数

AJJ*_*AJJ 1 java arrays integer

我是一个相当新的java,我有一些代码不能正常工作,我不知道为什么所以任何帮助将不胜感激.

我试图从文本文件中读取整数并将它们存储在数组中.这是我的代码:

Scanner keyboard = new Scanner(System.in);

    File file = new File ("Grades.txt");
    FileReader input = new FileReader(file);
    BufferedReader in = new BufferedReader(input);

    int [] id = new int [500];

    String s = in.readLine();
    String s1 = s.substring(0,5);

    while (s != null){
        int i = 0;
        id[i] = Integer.parseInt(s1);
        System.out.println(id[i]);
        s = in.readLine();
    }
    in.close();
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是它只存储文本文件中的第一个整数,并显示以下行的相同整数.这是我的输出:

57363
57363
57363
57363
57363
57363
57363
Run Code Online (Sandbox Code Playgroud)

这里是我正在阅读的文本文件的布局:

57363 Joy Ryder D D C P H H C D
72992 Laura Norder H H H D D H H H
71258 Eileen Over C F C D C C C P
70541 Ben Dover F F F P C C C F
46485 Justin Time F C F C D P D H
61391 Anna Conda D D F D D F D D
88985 Bob Down P F P F P F P P
Run Code Online (Sandbox Code Playgroud)

aio*_*obe 6

id[0]一遍又一遍地覆盖.您需要i在循环中增加索引变量.此外,s1永远不会更新.

int i = 0;
while (s != null){
    id[i] = Integer.parseInt(s.substring(0, 5));
    System.out.println(id[i]);
    s = in.readLine();
    i++;    
}
Run Code Online (Sandbox Code Playgroud)

然而,解决这个问题的更好方法是使用Scanner:

Scanner s = new Scanner(new File("Grades.txt"));
int i = 0;
while (s.hasNextLine()) {
    id[i] = s.nextInt();
    System.out.println(id[i]);
    // (The remaining fields could be read with s.next())
    s.nextLine(); // skip rest of line
    i++;
}
Run Code Online (Sandbox Code Playgroud)