java 中Scanner 从控制台输入数据时hasnext() ,方法与next()方法的区别?为什么都会要要求输入数据?
在学习Scanner类的过程中遇到一点小困难,求大家帮个忙Scannerreader=newScanner(System.in);System.out.println(r...
在学习Scanner 类的过程中遇到一点小困难,求大家帮个忙
Scanner reader=new Scanner(System.in);
System.out.println(reader.hasNext());
为什么上面的没有输出ture 或者false ,而是要求输入数据?
而Scanner reader=new Scanner("abcde");
System.out.println(reader.hasNext());则会输出true ,为什么控制台要要求输入数据,还有我发现在在hasnext() 和直接next()的两个方法都会要求输入数据?它们之间有什么关系和区别???????? 展开
Scanner reader=new Scanner(System.in);
System.out.println(reader.hasNext());
为什么上面的没有输出ture 或者false ,而是要求输入数据?
而Scanner reader=new Scanner("abcde");
System.out.println(reader.hasNext());则会输出true ,为什么控制台要要求输入数据,还有我发现在在hasnext() 和直接next()的两个方法都会要求输入数据?它们之间有什么关系和区别???????? 展开
2个回答
展开全部
你好,hasNext()方法的定义如下:
public boolean hasNext()如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。
返回:
当且仅当此扫描器有另一个标记时才返回 true
next()方法的定义:
public String next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息。即使以前调用 hasNext() 返回了 true,在等待要扫描的输入时此方法也可能阻塞。
相信你看完上面的解释,就应该明白是怎么回事了。
public boolean hasNext()如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。
返回:
当且仅当此扫描器有另一个标记时才返回 true
next()方法的定义:
public String next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息。即使以前调用 hasNext() 返回了 true,在等待要扫描的输入时此方法也可能阻塞。
相信你看完上面的解释,就应该明白是怎么回事了。
追问
额..还是 有点不明白, 这个扫描输入中,这个标记是什么?
追答
这个标记被封装起来了,你在源码中可以看到。举个简单的例子,它可能在内部定义了一个:
boolean flag = false ;如果检查到你输入了,将该flag置为true。然后检查标记,执行对应的逻辑。这就是标记的作用。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询