java的Scanner类的hasNext()方法问题 20

Scannersc=newScanner(System.in);while(sc.hasNext()){System.out.println(sc.next());}命令... Scanner sc = new Scanner(System.in);

while(sc.hasNext()){
System.out.println(sc.next());

}
命令行运行不会停止,你可以一直输入数据,不会自动结束,意思就是你跳不出这个循环了,为什么求指导???
展开
 我来答
AW521AM
推荐于2018-07-24 · TA获得超过111个赞
知道答主
回答量:5
采纳率:100%
帮助的人:7718
展开全部
hasNext()这个方法是如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。所以循环会一直下去。
你可以设置一个终止符,调用hasNext()的重载方法hasNext(String patten):如果下一个标记与从指定字符串构造的模式匹配,则返回 true。扫描器不执行任何输入。
例:以输入"0",结束输出
Scanner sc = new Scanner(System.in);
while (!sc.hasNext("0")) {
System.out.println(sc.next());
}
仅做参考!
亵渎挚爱
2012-12-07 · TA获得超过260个赞
知道小有建树答主
回答量:460
采纳率:0%
帮助的人:162万
展开全部
你可以试着把sc.hasNext()打印出来看看
随便输入个字符 结果是true 因为hasNext()是获取字符的
while循环的条件是true
它当然就是死循环 跳不出去了
如果你换成hasNextInt()
输入不是Int类型的东西他就为false
那么循环可以退出
反之输入的是Int为true 他也会一直执行
直到flase为止
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-07
展开全部
Scanner sc = new Scanner(System.in);

此句 表示从控制台获取数据,
sc.hasNext() 表示你是否有输入数据,
while语句块 表示当你输入数据的时候,就执行输出sc.next()(输出内容)
所以只要你输入数据了,它就可以执行,
所以后台只是开了一块内存,一直未关闭,不算死循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-07-23
展开全部

我记得以前好像可以直接回车跳出,但是现在突然发现了,掉坑。。。

while (scanner.hasNextLine()) {
    String string = (String) scanner.nextLine();
    if (string.equals("")) {
        break;
    }
}

这样就可以了,注意equals不能换成等号,因为等号比的是值(数值或地址值),而“”比较的其实是两个不同字符对象的内容而不是值。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
的551551
2018-05-13
知道答主
回答量:11
采纳率:33%
帮助的人:3.6万
引用AW521AM的回答:
hasNext()这个方法是如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。所以循环会一直下去。
你可以设置一个终止符,调用hasNext()的重载方法hasNext(String patten):如果下一个标记与从指定字符串构造的模式匹配,则返回 true。扫描器不执行任何输入。
例:以输入"0",结束输出
Scanner sc = new Scanner(System.in);
while (!sc.hasNext("0")) {
System.out.println(sc.next());
}
仅做参考!
展开全部
炼金00000000000000000
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式