没有这样的元素异常,dubble line Scanner

时间:2013-11-25 17:43:35

标签: java nosuchelementexception

我正在尝试添加tableLineScanner中的两行,它们来自名为Scanner的{​​{1}}的行。

无论如何,我得到了这些错误

tableScanner

但是在下面的代码中,我无法理解为什么会出现此错误。因为我检查他们是否有两条线可用并且没有参与。

    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)

请帮助:(

1 个答案:

答案 0 :(得分:3)

方法Scanner#hasNextLine()只是告诉您是否还有一行可用。如果你打两次电话,它仍会告诉你,是否还有一条线可用。您可以将其称为n次,但它只会告诉您下一行。

致电Scanner#nextLine(),然后您可以再次测试是否有其他可用线路。

始终这样做:

  1. 测试是否有更多数据
  2. 阅读数据
  3. 测试是否有更多数据
  4. ...

  5. 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)
    }