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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java中如何取绝对值(调用绝对值函数)

    一、绝对值函数使用说明绝对值函数是JDK中Math.java中的实现方法,其用来得到表达式的绝对值。其实现非常简单,源码如下:/***Returnstheabsolutevalueofan{@codeint}value.*Iftheargumentisnotnegative,theargumentisreturned.*Iftheargumentis…

    2022年4月17日
    46
  • format python保留小数点后几位_python四舍五入保留两位小数

    format python保留小数点后几位_python四舍五入保留两位小数print(“{:.2f}”.format(3.1415926))传送门

    2022年8月11日
    4
  • aop 实现原理_简述aop的原理

    aop 实现原理_简述aop的原理概述:最近在开发中遇到了一个刚好可以用AOP实现的例子,就顺便研究了AOP的实现原理,把学习到的东西进行一个总结。文章中用到的编程语言为kotlin,需要的可以在IDEA中直接转为java。这篇文章将会按照如下目录展开:AOP简介 代码中实现举例 AOP实现原理 部分源码解析1.AOP简介相信大家或多或少的了解过AOP,都知道它是面向切面编程,在网上搜索可以找到很多的解释。…

    2022年9月18日
    1
  • 一篇文章彻底搞懂异步,同步,setTimeout,Promise,async「建议收藏」

    一篇文章彻底搞懂异步,同步,setTimeout,Promise,async「建议收藏」之前翻看别的大佬的博客看到了关于setTimeout,promise还有async执行顺序的文章。观看了几篇之后还是没有怎么看懂,于是自己开始分析代码,并整理了此文章,我相信通过此文章朋友们能对异步同步还有,setTimeout,Promise,async这些内容了然于胸,接下来让我们走入正题:…

    2022年7月12日
    18
  • 如何制作一个简单的网页(二)_简单的个人网页

    如何制作一个简单的网页(二)_简单的个人网页使用HTML和CSS来制作一个简单的网页前言一、HTML1.1常见元素介绍1.2借助工具,浏览器开发者工具二、实现个人名片1.基本框架2.使用CSS美化1.CSS书写位置1、以元素的style属性来指定(内联样式)2、以style标签包裹(内部样式)3、以外部文件的方式 (外部样式)2.CSS中的选择器1.标签选择器2.id选择器3.类选择器4.子元素选择器前言HTML负责描述了网页的整体骨架CSS负责描述了页面样式利用其完成一个简单的个人建立网页。一、HTMLHTML不是

    2022年10月10日
    2
  • java 标识符,分隔符,关键字[通俗易懂]

    java 标识符,分隔符,关键字[通俗易懂](一)标识符的介绍   Java语言中,对于变量,常量,函数,语句块也有名字,我们统统称之为Java标识符.标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的。  Java标识符由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成。在Java中是区分大小写的,而且还要求首位不能是数字。最重要的是,Java关键字不能当作Java标识符。下面的标识符是合法…

    2022年7月7日
    21

发表回复

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

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