在数组中读取和存储整数

时间:2014-10-09 08:11:54

标签: 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();

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

57363
57363
57363
57363
57363
57363
57363

此处还有我正在阅读的文本文件的布局:

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

2 个答案:

答案 0 :(得分: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++;    
}

更好的解决方法是使用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++;
}

答案 1 :(得分:1)

你永远不会改变s1而永远不会增加i:

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();
}

我认为这就是你要做的事情:

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