【发布时间】:2017-12-09 16:56:10
【问题描述】:
我正在从文件中读取一些数据,并且每一行都分配给字符串数组的一个单元格。出于某种原因,当我在读取文件后尝试打印数组时(第 8-10 行),我什么也没打印。当我在 While 循环(第 5 行)中打印该行时,我得到了正确打印的行。
1: int count = 0;
2: String[] s = new String[300];
3: while(!StdIn.isEmpty()) {
4: s[count]=StdIn.readLine();
5: System.out.println(s[count]);
6: count++;
7: }
8: for(int i=0;i<count;i++) {
9: System.out.println(s[i]);
10: }
使用扫描仪的相同代码:
Scanner in = new Scanner(System.in);
int count = 0;
String[] s = new String[300];
while(in.hasNextLine()) {
s[count]=in.nextLine();
System.out.println(s[count]);
count++;
}
for(int i=0;i<count;i++) {
System.out.println(s[i]);
}
我无法弄清楚我的代码有什么问题。
提前致谢。
编辑:读取最后一行后, in.hasNextLine() 不会返回任何内容。它卡在count++上。见照片->DEBUGGER
【问题讨论】:
-
我看不出有什么问题,但不知道
StdIn是什么或做什么,我们看不到全貌。您是否尝试过调试? What is a debugger and how can it help me diagnose problems? -
@Andreas 使用扫描仪将相同的代码添加到我的问题中,如果有帮助的话。
-
您能否在问题中包含您得到的确切输出以及您想要的输出?
-
您说您正在从文件中读取文本,但您的编辑表明您正在从
System.in读取。两种情况有很大区别。 System.in 一直打开,直到它被显式关闭,所以hasNextLine不能返回false,因为用户/进程可能正在写入 System.in,所以hasNextLine需要等待 i> 用于数据,因此您仍处于第一个循环中。如果文件之后它将读取最后一行hasNextLine可以返回 false 并继续到负责打印数组内容的下一个循环。 -
如果您真的是在阅读文件,请正确发布minimal reproducible example,否则我们无法帮助您。
标签: java arrays string printing