while(hasNextInt())为什么不会结束循环
importjava.io.*;importjava.util.*;publicclassMain{publicstaticvoidmain(Stringargs[]){...
import java.io.*;
import java.util.*;
public class Main {
public static void main(String args[]){
Scanner cin = new Scanner(System.in);
int[] a=new int[20];
int k=1;
int[] sum = new int[20];
while(cin.hasNextInt()){
a[k]=cin.nextInt();
k++;
}
//我想要按回车空一行后就跳出while循环,但是在运行的时候不会跳出。
for(int i=1;i<=k;i++){
System.out.println(a[i]);
}
}
} 展开
import java.util.*;
public class Main {
public static void main(String args[]){
Scanner cin = new Scanner(System.in);
int[] a=new int[20];
int k=1;
int[] sum = new int[20];
while(cin.hasNextInt()){
a[k]=cin.nextInt();
k++;
}
//我想要按回车空一行后就跳出while循环,但是在运行的时候不会跳出。
for(int i=1;i<=k;i++){
System.out.println(a[i]);
}
}
} 展开
2个回答
展开全部
我写了一下,估计是因为你的数据是从控制台的输入流里取的,由于你输入流没有关闭,就一直初于开启的状态,s.hasNext(),就一直在等待输入流有数据输入,有数据输入就往循环里面走,完了后数据读完了,s.hasNext()就继续等待,直到有数据输入,如果没数据输入,循环就不会结束,一直在等待 。如果你在循环后面写输出list,应该是不会有结果,除非你在循环中加入System.in.close();执行完一次,流被关闭了 ,s.hasNext()返回是false,循环结束,这样才会输出 。其次照你下面的说法,其实是没有跳出循环,而是回到了上面等待有数据输入,所以也就形成了为什么你能够输入多次而不是输入一次就完了 。
2015-02-15
展开全部
你这就想当然了。你每次输入完一个值都要回车,电脑不会知道你哪次回车是要结束输入。要达到这个效果,需要你自己程序中进行控制。例外提醒你,k定义时初始值应该设为0的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询