Scanner的hasNext()方法

Scanner的hasNext()方法一、实例代码importjava.util.*;publicclassScannerKeyBoardTest{publicstaticvoidmain(String[]args){System.out.println("请输入若干单词,以空格作为分隔");Scannersc=newScanner(System…

大家好,又见面了,我是你们的朋友全栈君。

一、实例代码

import java.util.*;
public class ScannerKeyBoardTest
{
	public static void main(String[] args)
	{
		System.out.println("请输入若干单词,以空格作为分隔");
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext())
		{
			System.out.println("键盘输入的内容是:"

				+ sc.next());
		}
		System.out.println("执行吗");
	}
}

最后的“执行吗”会被执行到吗?来,看实验结果
这里写图片描述
文字模糊,手动说明(这里的输入光标在闪动,期待你的再次输入!)

二、执行过程

为什么会这样,和我们理解的不一样呀?我们理解的运行过程是
这里写图片描述
hasNext()在缓冲区中依次扫描单词,分别返回true,然后再执行打印输出。扫描到空时返回false,退出while循环,最后执行“执行吗”语句。一般人都会这么想,然而不能想当然。下面我们去查一下API
这里写图片描述
方法解释:如果此扫描器的输入(缓冲区)中有另一个token(输入的字符串),则返回true。what? 根本没有提到什么时候返回false。其实执行过程是这样的(重点:),当执行到hasNext()时,它会先扫描缓冲区中是否有字符,有则返回true,继续扫描。直到扫描为空,这时并不返回false,而是将方法阻塞,等待你输入内容然后继续扫描。这样的话,它岂不是吃了**口香糖根本停不下来。

三、解决方法

使用带有参数的重载方法,当扫描到的字符与参数值匹配时返回true
这里写图片描述
修改后代码

import java.util.*;
public class ScannerKeyBoardTest
{
    public static void main(String[] args)
    {
        System.out.println("请输入若干单词,以空格作为分隔");
        Scanner sc = new Scanner(System.in);
        while(!sc.hasNext("#"))  //匹配#返回true,然后取非运算。即以#为结束符号
        {
            System.out.println("键盘输入的内容是:"

                + sc.next());
        }
        System.out.println("会执行的");
    }
}

运行结果:
这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162034.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • totalcmd工具的主要功能_windows cmd 命令大全

    totalcmd工具的主要功能_windows cmd 命令大全一、Totalcmd配合7-Zip进行压缩、解压缩下载7z文件。可去官网下载安装版文件,再解压,只提取其中的7z.dll文件和7zG.exe文件再将其放在totalcmd\Utilities\7-Zip目录下。(注Utilities是我自己建的一个文件夹,用来存放一些可直接调用的小工具。)说明:虽说7-Zip有个叫7za.exe的命令行工具,但显示效果不佳…

    2025年8月3日
    12
  • 反射型XSS的利用「建议收藏」

    反射型XSS的利用「建议收藏」反射型XSS:用户输入的恶意代码,被执行。利用:它通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行。它的特点是非持久化,必须用户点击带有特定参数的链接才能引起。以前一直觉得反射型XSS危害不大,只能自己在客户端玩玩,实现弹窗。没想到,反射型XSS的利用比存储型还更容易,存储型XSS的利用还需结合CSRF.这篇博客很好的讲述了反射型XS…

    2022年5月4日
    99
  • C++移位运算符

    关于逻辑移位、算术移位可参见迅雷深大笔试题部分。的一道题。以前看到C++标准上说,移位运算符(<<、>>)出界时的行为并不确定:Thebehaviorisundefi

    2021年12月26日
    47
  • pycharm过期了_pycharm到期怎么延长

    pycharm过期了_pycharm到期怎么延长pycharm的LICENSE过期1.把jetbrains-agent.jar复制到bin目录下,我的是在download里,找了半天才找到2.vmoptions64和vmoptions最后加上-javaagent:/目录/jetbrains-agent.jar一定不要写错,写错出不来注册框3.注册框弹出来,选择Licenseserver方式,地址填入:http://jetbrain…

    2022年8月28日
    3
  • jsp+servlet实现简单登录页面功能Demo

    jsp+servlet实现简单登录页面功能Demo小白新路历程-1[转载请联系本人]实现功能:模拟简单登录功能,登录成功跳转新页面,登录失败在原登录界面提示登录失败信息开发环境:eclipseTomcat-8.0预备知识:HTML标签,Servlet相关知识——请求的转发与重定向,jsp相关知识,EL表达式思路实现:共2个jsp,一个servlet1.登录界面login.jsp:采用jsp,不采用html的原因是因为要进行登录…

    2022年6月18日
    28
  • JQuery——图片缩放和截图发送

    记录一下图片缩放 和截图发送!图片缩放 https://yihui.name/cn/2007/09/highslide-and-lightbox/ http://www.zhangxinxu.com/jq/balupton_zh/demo/ http://www.dowebok.com/demo/214/ http://www.lanrentuku.com/js/tupian-933.htm

    2022年2月26日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号