hasNextLine()while循环不退出

时间:2015-02-16 01:34:46

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

我知道我需要使用hasNextLine()来推进该行 - 但是当我引用hasNextLine()时,我不确定它为什么还没有退出while循环:

我在这里使用扫描仪(sc)来读取输入文件

while(sc.hasNextLine()){                            
//read post specifications from line
                            String postspecs = sc.nextLine();

                            //split line
                            String[] postspecs_s = postspecs.split(", ");


                            //create post
                            reddit.findUser(stripExtension(argfile.getName())).
                            addPost(postspecs_s[0], PostType.valueOf
                                    (postspecs_s[1]), postspecs_s[2]);

                            System.out.println("created");
                        }

1 个答案:

答案 0 :(得分:1)

如果达到EOF(文件结尾)字符,

'hasNextLine'将仅返回false。停止阅读的一种更简单的方法是等待您从System.in读取的标记值。

所以你会有像

这样的东西
String s = sc.nextLine();
while(!s.equals(SENTINEL))
    //proceed and dont forget to re-read.

我认为ctrl + z会在Windows上,在iPod atm上向系统发送EOF,因此无法测试。