我正试图从tableLineScanner
添加两行,这两行来自一个名为tableScanner
的Scanner
。
无论如何,我得到这些错误
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1416)
at Database.main(Database.java:77)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
但是在下面的代码中,我不明白为什么会出现这个错误。由于我检查了他们是否有两条线路可用,因此没有接通。
if((tableLineScanner.hasNextLine()&&(tableLineScanner.hasNextLine()))){ //Checks if it exists two available lines.
fieldInput = (tableLineScanner.next() + " " + (tableLineScanner.next().replaceAll("[()]", ""))+",");
tableFields.add(fieldInput);
System.out.println("ADDING: " + fieldInput + " to tableField array list");
}
请帮助:(
方法Scanner#hasNextLine()
只是告诉您是否还有一行可用。如果你打两次电话,它仍然会告诉你,如果还有一条线路可用。你可以叫它n
次,但它只会告诉你下一行的情况。
调用Scanner#nextLine()
,然后您可以再次测试是否有其他线路可用。
总是这样做:
- 测试是否有更多数据可用
- 读取数据
- 测试是否有更多数据可用
if (tableLineScanner.hasNextLine()) {
String firstLine = tableLineScanner.nextLine();
if (tableLineScanner.hasNextLine()) {
String secondLine = tableLineScanner.nextLine().replaceAll(...);
tableFields.add(firstLine + secondLine);
} else {
// No-second-line error handling goes here
}
} else {
// No-first-line error handling goes here (if any)
}