java scanner下一行抛出但只有print语句

时间:2017-10-11 03:15:51

标签: java while-loop java.util.scanner

当我尝试使用java扫描程序时,它可以工作,在我的列表中,我将所有文本文件内容作为列表。 但是当我尝试在while循环中打印时,它会抛出     java.util.NoSuchElementException:找不到行 最后一行的例外。为什么会出现这种情况,如果它已经超出范围,那么mylist也不会被抛出?

try {
        Scanner myscanner = new Scanner(new FileReader(myfilepath));
        while(myscanner.hasNextLine()){
            //System.out.println(myscanner.nextLine() );
            mylist.add(myscanner.nextLine()); 
            numline += 1;
        }
        myscanner.close();
    }
    catch (Exception ex) {
           ex.printStackTrace();
        }

2 个答案:

答案 0 :(得分:1)

您检查是否有下一行,然后在打印时阅读 2 行。

您应将其更改为:

String line = myscanner.nextLine();
// print and add to list using line variable

答案 1 :(得分:0)

为了避免你应该创建变量来存储myscanner.nextLine()的结果,然后打印它并将其添加到列表中。 e.g

 while(myscanner.hasNextLine()){
        String temp = myscanner.nextLine();
        System.out.println(temp);
        mylist.add(temp); 
        numline += 1;
    }