我正在尝试逐行阅读文件,并对以字符“Q'”开头的每一行采取措施。在尝试了SO和JavaDoc的许多解决方案后,我不断收到此错误。我无法弄清楚我的生活是什么。我的方法如下:
public Question makeQuestion(){
//scanner checks line and takes action
while(fileScan.hasNextLine()){
//save the line
String line = fileScan.nextLine();
//if line is blank move on to next line
if(line.isEmpty()) fileScan.nextLine();
//if line starts with Q do something
if(line.charAt(0) == 'Q'){
System.out.println(line);
}
}
该方法查找以Q开头但在此之后失败的第一行。我能做错什么?
答案 0 :(得分:0)
您不想在循环中执行send nextLine()。
试试这个:
while(fileScan.hasNextLine()){
//save the line
String line = fileScan.nextLine();
//if line is NOT empty AND starts with Q do something
if(!line.isEmpty() && line.charAt(0) == 'Q'){
System.out.println(line);
}
}
答案 1 :(得分:0)
public Question makeQuestion(){
//scanner checks line and takes action
while(fileScan.hasNextLine()){
//save the line
String line = fileScan.nextLine();
//if line starts with Q do something
if(line != null && !line.isEmpty() && line.charAt(0) == 'Q'){
System.out.println(line);
}
}
如果您在循环中调用nextLine两次,则可能会在第一次调用中到达最后一行。
在这种情况下,第二次调用将抛出异常,因为没有下一行。
答案 2 :(得分:0)
如果该行为空,则不应再次读取该行。
public Question makeQuestion(){
//scanner checks line and takes action
while(fileScan.hasNextLine()){
//save the line
String line = fileScan.nextLine();
//if line starts with Q do something
if(!line.isEmpty() && line.charAt(0) == 'Q'){
System.out.println(line);
}
}
答案 3 :(得分:0)
你的逻辑,
if(line.isEmpty()) fileScan.nextLine();
不正确(一方面,它不会更新line
,因此您输出空行)。最简单的解决方案可能是使用,
if(line.isEmpty()) continue;