while(true)和while之间有什么区别(new Scanner(System.in).hasNext)

时间:2016-08-27 10:49:15

标签: java while-loop

Scanner sc = new Scanner(System.in);

while(true){             
    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);
    }
}

上面的代码给出Index out of bounds;但是当我使用sc.hasNext()时,它会起作用。为什么呢?

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);
    }
}

1 个答案:

答案 0 :(得分:0)

基本上

while(true) {
     //some code
}

将永远运行,除非你以某种方式使用break

while(sc.hasNext()) {
    //some code
}
Scanner sc无法阅读任何内容或您使用break关键字时,

将停止投放。