我是靠谱客的博主 安详棒球,这篇文章主要介绍hasnext()用法,现在分享给大家,希望可以做个参考。

Scanner sc = new Scanner(System.in);

此句 表示从控制台获取数据,
sc.hasNext() 表示你是否有输入数据,
while语句块 表示当你输入数据的时候,就执行输出sc.next()(输出内容)
所以只要你输入数据了,它就可以执行,
所以后台只是开了一块内存,一直未关闭,不算死循环。

这是yangxue_mifen博主写的,自己看了看,不是很懂,于是自己调试了一下。

例子1:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class _07_错误票据1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); in.hasNext(); //返回boolean类型 String s = in.next(); System.out.println("打印:"+s); } } 结果: 数据 //用户键盘输入 打印:数据 //没有in.next()等待输入的过程,直接跳到println()打印
  • 可以看到,系统只等待用户键盘输入一次。而in.hasNext()与in.next()单独使用时,系统都会等待用户键盘输入的。为什么这里少等待了一次呢,原因如下:
  • in.hasNext()方法会判断是否有输入数据,如果有,则返回true,并将所输入的数据读取备用。当下次使用in.next()时,就不需要再次键盘输入数据了,无需用户输入,s的值直接被赋值为“数据”。

例子2:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class _07_错误票据1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); in.hasNext(); while(in.hasNext()) { System.out.println("哈哈哈"); } in.hasNext(); } } 结果: www //用户键盘输入 哈哈哈 哈哈哈 哈哈哈 哈哈哈 。。。。 //陷入死循环
  • 可以看到这里陷入了死循环,in.hasNext()返回boolean值,并且不会反复判断,因为第一次执行in.hasNext();后就将数据保存备用了。

最后

以上就是安详棒球最近收集整理的关于hasnext()用法的全部内容,更多相关hasnext()用法内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部