hasNext()函数在循环时没有终止

时间:2016-04-15 08:09:21

标签: java

public class EOF {
    public static void main(String[] args)  {
        Scanner sc = new Scanner(System.in);
        int i=1;
        while(sc.hasNextLine()==true)
        {
            String str = sc.nextLine();
            System.out.println(i+" "+str);
            i++;
        }
        System.out.println("completed");
    }
}

最后一行System.out.println("completed");未执行。循环不会终止并且一直在运行。

2 个答案:

答案 0 :(得分:1)

来自documentation for Scanner.hasNextLine()

  

此方法可能会在等待输入时阻止。

这意味着如果没有输入等待返回,它将等待更多输入进入。

如果Scanner正在接受来自System.in的输入,则需要找到一种更好的方法来决定何时完成输入。例如,如果用户键入"quit",或者他们输入空行。

答案 1 :(得分:0)

请使用此

public class EOF {
    public static void main(String[] args)  {
        Scanner sc = new Scanner(System.in);
        int i=1;
        while(sc.hasNextLine()==true)
        {
            String str = sc.nextLine();
            System.out.println(i+" "+str);
            i++;
            if(str.equals("stop")){
                break;
            }
        }
        System.out.println("completed");
    }
}