hasnext()用法

Scanner sc = new Scanner(System.in);

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

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

例子1:

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:

	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();后就将数据保存备用了。

你可能感兴趣的:(JAVA)