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()的两个方法都会要求输入数据?它们之间有什么关系和区别????????
展开
 我来答
568145421
2011-09-30 · 知道合伙人软件行家
568145421
知道合伙人软件行家
采纳数:1353 获赞数:6756

向TA提问 私信TA
展开全部
你好,hasNext()方法的定义如下:
public boolean hasNext()如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。
返回:
当且仅当此扫描器有另一个标记时才返回 true
next()方法的定义:
public String next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息。即使以前调用 hasNext() 返回了 true,在等待要扫描的输入时此方法也可能阻塞。
相信你看完上面的解释,就应该明白是怎么回事了。
追问
额..还是 有点不明白, 这个扫描输入中,这个标记是什么?
追答
这个标记被封装起来了,你在源码中可以看到。举个简单的例子,它可能在内部定义了一个:
boolean flag = false ;如果检查到你输入了,将该flag置为true。然后检查标记,执行对应的逻辑。这就是标记的作用。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5195152
2011-09-30 · TA获得超过1164个赞
知道大有可为答主
回答量:1314
采纳率:0%
帮助的人:712万
展开全部
System.in是要你输入的
new Scanner("abcde");
abcde就是输入了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式