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

}
}
展开
 我来答
mx...3@sohu.com
2018-04-13 · TA获得超过332个赞
知道小有建树答主
回答量:297
采纳率:69%
帮助的人:43.2万
展开全部
我写了一下,估计是因为你的数据是从控制台的输入流里取的,由于你输入流没有关闭,就一直初于开启的状态,s.hasNext(),就一直在等待输入流有数据输入,有数据输入就往循环里面走,完了后数据读完了,s.hasNext()就继续等待,直到有数据输入,如果没数据输入,循环就不会结束,一直在等待 。如果你在循环后面写输出list,应该是不会有结果,除非你在循环中加入System.in.close();执行完一次,流被关闭了 ,s.hasNext()返回是false,循环结束,这样才会输出 。其次照你下面的说法,其实是没有跳出循环,而是回到了上面等待有数据输入,所以也就形成了为什么你能够输入多次而不是输入一次就完了 。
匿名用户
2015-02-15
展开全部
你这就想当然了。你每次输入完一个值都要回车,电脑不会知道你哪次回车是要结束输入。要达到这个效果,需要你自己程序中进行控制。例外提醒你,k定义时初始值应该设为0的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式