Java while(true)和while(新扫描仪(System.in).hasNext)之间的区别是什么

Java while(true)和while(新扫描仪(System.in).hasNext)之间的区别是什么,java,while-loop,Java,While Loop,本质上 Scanner sc = new Scanner(System.in); while(sc.hasNext()){ TreeSet<Integer> set=new TreeSet<Integer>(); int n=sc.nextInt(); for(int i=0;i<n;i++){ set.add(sc.nextInt()); } for(Integer i:set){ S

本质上

Scanner sc = new Scanner(System.in); 
while(sc.hasNext()){

    TreeSet<Integer> set=new TreeSet<Integer>();
    int n=sc.nextInt();

    for(int i=0;i<n;i++){
        set.add(sc.nextInt());
    }

    for(Integer i:set){
        System.out.println(i);
    }
}
将永远运行,除非您以某种方式使用
break

while(true) {
     //some code
}

Scanner sc
不再有任何可读取内容或您使用
break
关键字时,将停止运行。

链接未打开…
,而(true)
永远不会结束,除非您
break
return
退出。请在问题中发布您的代码,而不是作为链接发布(即使链接有效)。请粘贴代码,而不是图像!如果你粘贴代码,我们可以复制并检查它。不要期望我们键入所有这些代码。在提交问题之前,您应该先查看预览…是的,您的回答是对的,但为什么它会导致索引超出范围之类的错误?没有
true
sc.hasNext()
cause
indexOutOfBoundsException
。它必须在代码中的其他地方。请阅读并询问另一个关于代码片段exception stacktrace的问题(此文本包含许多信息),然后我们将能够提供帮助。对于什么输入,您会得到exception?无法在OJ平台上复制我的实践
while(true) {
     //some code
}
while(sc.hasNext()) {
    //some code
}