我知道我需要使用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");
                        }

最佳答案

仅当达到EOF(文件末尾)char时,“hasNextLine”才会返回false。停止读取的一种简单方法是等待从System.in中读取的标记值。

所以你会有类似

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

我认为ctrl + z会将EOF发送到Windows,iPod atm上的system.in,因此无法测试。

07-24 09:36