永发信息网

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

答案:6  悬赏:50  手机版
解决时间 2021-04-01 19:38
  • 提问者网友:树红树绿
  • 2021-04-01 00:37
java的Scanner类的hasNext()方法问题
最佳答案
  • 五星知识达人网友:杯酒困英雄
  • 2021-04-01 01:20
hasNext()这个方法是如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。所以循环会一直下去。
你可以设置一个终止符,调用hasNext()的重载方法hasNext(String patten):如果下一个标记与从指定字符串构造的模式匹配,则返回 true。扫描器不执行任何输入。
例:以输入"0",结束输出
Scanner sc = new Scanner(System.in);
while (!sc.hasNext("0")) {
System.out.println(sc.next());
}
仅做参考!
全部回答
  • 1楼网友:封刀令
  • 2021-04-01 04:22

我记得以前好像可以直接回车跳出,但是现在突然发现了,掉坑。。。while (scanner.hasNextLine()) {
    String string = (String) scanner.nextLine();
    if (string.equals("")) {
        break;
    }
}
这样就可以了,注意equals不能换成等号,因为等号比的是值(数值或地址值),而“”比较的其实是两个不同字符对象的内容而不是值。
  • 2楼网友:像个废品
  • 2021-04-01 04:04
引用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楼网友:孤独的牧羊人
  • 2021-04-01 03:34
请补充完整问题
  • 4楼网友:山河有幸埋战骨
  • 2021-04-01 02:37
Scanner sc = new Scanner(System.in);
此句 表示从控制台获取数据,
sc.hasNext() 表示你是否有输入数据,
while语句块 表示当你输入数据的时候,就执行输出sc.next()(输出内容)
所以只要你输入数据了,它就可以执行,
所以后台只是开了一块内存,一直未关闭,不算死循环
  • 5楼网友:西风乍起
  • 2021-04-01 01:33
你可以试着把sc.hasNext()打印出来看看
随便输入个字符 结果是true 因为hasNext()是获取字符的
while循环的条件是true
它当然就是死循环 跳不出去了
如果你换成hasNextInt()
输入不是Int类型的东西他就为false
那么循环可以退出
反之输入的是Int为true 他也会一直执行
直到flase为止
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯