java I/O中的NoTouchElement异常
我有一个方法,应该从一个txt文件中读取,然后在交互窗格中打印出读取的信息。该方法有效,我得到了文件中的所有数据,但最后我还打印了java.util.NoSuchElementException。我知道这意味着扫描仪已经到达了文件的末尾,没有更多的数据可读取,但不知道如何解决问题。有人能帮我吗java I/O中的NoTouchElement异常,java,exception,io,java.util.scanner,Java,Exception,Io,Java.util.scanner,我有一个方法,应该从一个txt文件中读取,然后在交互窗格中打印出读取的信息。该方法有效,我得到了文件中的所有数据,但最后我还打印了java.util.NoSuchElementException。我知道这意味着扫描仪已经到达了文件的末尾,没有更多的数据可读取,但不知道如何解决问题。有人能帮我吗 public void parseRecord(String recordFileName){ File recordFile = null; Fruit fruit = null; String co
public void parseRecord(String recordFileName){
File recordFile = null;
Fruit fruit = null;
String color = null, name = null;
Scanner sc = null;
PrintWriter output = null;
try{
recordFile = new File(recordFileName);
sc = new Scanner(recordFile);
sc.useDelimiter("- *");
while(sc.hasNext()){
color = sc.next();
name = sc.next();
fruit = new Fruit(color, name);
System.out.println(fruit);
}
sc.close();
}catch(Exception e){
System.out.println(e);
}
}
我想问题可能出在我创建的txt文件上。我使用-作为分隔符,在文件的最后一行我不应该放-,意思是 橙色-橙色- 青苹果
当我执行此操作时,不再出现错误您遇到的一个问题是,您没有在每次使用
next
时检查hasNext
:
while(sc.hasNext()) {
String color = sc.next();
if(sc.hasNext()) {
String name = sc.next();
Fruit fruit = new Fruit(color, name);
System.out.println(fruit);
}
}
您遇到的一个问题是每次使用
next
时都没有检查hasNext
:
while(sc.hasNext()) {
String color = sc.next();
if(sc.hasNext()) {
String name = sc.next();
Fruit fruit = new Fruit(color, name);
System.out.println(fruit);
}
}
哪一行抛出异常?你能发布堆栈跟踪吗?当我捕获异常时,它只是打印出来,没有给出行,如:java.util。NoSuchElementException@user1181847而不是执行
System.out.println(e)
,doe.printStackTrace()代码>。您可以发布代码的行号吗?哪一行引发异常?你能发布堆栈跟踪吗?当我捕获异常时,它只是打印出来,没有给出行,如:java.util。NoSuchElementException@user1181847而不是执行System.out.println(e)
,doe.printStackTrace()代码>。您可以为代码张贴行号吗?内部while
不应该是if
?内部while
不应该是if
?