Java 读取并存储数组中的整数
我对java相当陌生,我有一些代码不能正常工作,我不知道为什么会有任何帮助将不胜感激 我试图从文本文件中读取整数并将其存储在数组中。这是我的密码:Java 读取并存储数组中的整数,java,arrays,integer,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(inp
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
您正在一次又一次地覆盖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 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++;
}
您正在一次又一次地覆盖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 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++;
}
您从未更改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++
}
您从未更改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++
}
而且
s1
永不改变。谢谢,第一个解决方案非常有效!我还尝试了您提供的Scanner方法,因为它看起来更简单,但显示的输出为7行重复的单个数字0,I
在写入值后但在打印值之前递增。向下移动i++
。现在它可以工作了。请注意,如果您将代码包装在一个try块中,如下所示:try(Scanner s=new Scanner(…){剩下的代码在这里}
扫描仪将自动为您关闭。啊,我明白了,非常感谢您的帮助。而且s1
永远不会更改。谢谢您,第一个解决方案工作得很好!我还尝试了您提供的Scanner方法,因为它看起来更简单,但显示的输出为7行重复的单个数字0,I
在写入值后但在打印值之前递增。向下移动i++
。现在它可以工作了。请注意,如果您将代码包装在一个try块中,如下所示:try(Scanner s=new Scanner(…){剩下的代码在这里}
扫描仪将自动为您关闭。啊,我明白了,非常感谢您的帮助。