我对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
答案 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++
}