Java零基础入门-Scanner类

一、概述

        对于上几期,我们有学完java的反射机制及java正则,有些小伙伴私下给我说,教的有点太难理解了,不是很能消化,说教学内容学习压力有点大,我仔细去看了看,确实是我教学先后顺序的问题,是我没把握好教学内容的先后顺序,这个得调整,教学嘛,既然是零基础,那必须得按小白级来教学才对,所以啊,我接下来呢,就给大家带来一篇非常好理解的知识点,希望大家能够喜欢。

        废话不多说,咱们直接开始今日的内容。

二、本期教学目标

  • 掌握Scanner类概念
  • 了解Scanner类有哪些常用api
  • 掌握next方法
  • 掌握nextLine方法
  • next()与nextLine()二者有何区别
  • 实例:实现日期格式的数据输入

三、正文

1️⃣概念

        针对java5版本诞生,在jdk之前版本这次的版本是添加了java.util.Scanner类;其类是一个用于扫描输入文本的工具集。它不仅提供了可结合正则表达式和从输入流中检索某些特定数据项的方法,也提供了对任意字符串和基本类型的数据进行分析。你可以使用Scanner类,针对任意要处理的文本内容编写自定义的语法分析器,替你对数据进行分析是否符合你的预定内容格式。

        总而言之,有该类的存在,还是非常的方便好用。它就是一个用户获取键盘输入的工具类,也可以从文件、字符串、输入流等中解析出基本类型等值。

下面是创建Scanner类的基本语法:

Scanner scanner = new Scanner(System.in);

2️⃣常用api

        如下是我实例了一个Scanner对象,通过对象点的形式,你可以看到它提供了这么多方法,那么我就对其中比较常用的api进行一下介绍吧。

  • String next():查找并返回来自扫描器的下一个完整标记。
  • String next(String pattern):如果下一个标记与指定的pattern指定模式匹配,则返回下一个标记。
  • int nextInt():将输入信息的下一个标记扫描为一个int值。
  • String nextLine():此扫描器执行当前行,并返回跳过输入信息。
  • long nextLong():将输入信息的下一个标记扫描为一个long值。
  • short nextShort():将输入信息的下一个标记扫描为一个short值。
  • float nextFloat():将输入信息的下一个标记扫描为一个float值。
  • double nextDouble():将输入信息的下一个标记扫描为一个double值。
  • ...

        然后其中还有nextXxx()与hasNextXxx() 方法,二者的作用就是nextXxx()是为了获取下一个输入,而hasNextXxx() 方法是判断是否有下一个输入项,其中Xxx可以是int、long、double等基础类型数据,若只判断是否包含下一个字符串,则你直接使用hasNext()方法即可。

3️⃣next()方法

        接着我要重点来讲解一下next()与nextLine()方法,具有很好的参考价值。其中我先讲解下一下next方法,next()方法查找并返回来自此扫描器的下一个完整标记。切记,只读取输入直到空格。这点我会用示例给大家演示。

具体示例如下:

    public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入一个字符串");String str = scanner.next();System.out.println("您输入的字符串为:" + str);}

打印如下:

 请输入一个字符串
bug
您输入的字符串为:bug

请输入一个字符串
adad dada dsada2
您输入的字符串为:adad 

        总而言之,示例2你们是看到了其空格所带来的问题,它不能读取由两个空格隔开的字符,next方法只读取空格之前的数据,并且光标指向本行。 

4️⃣nextLine()方法

        上方讲解完了next方法,接着就我就给大家讲一下其nextLine()方法,其方法是返回输入源中下一行的所有内容。

具体示例如下:

    public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入一个字符串");String str = scanner.nextLine();System.out.println("您输入的字符串为:" + str);}

 打印如下:

请输入一个字符串
abcd 123   hhhh
您输入的字符串为:abcd 123   hhhh

        很明显, 对于next方法而言,nextLine方法是能完整读取到改行的所有内容,包括空格等,它是直接读到行尾才结束,然后回车,光标是直接定位到下一行。

5️⃣next()与nextLine()区别

        所以这里就要来简单对比一下,二者方法有何区别啦。

  1. 对于next()方法:一定要读取到有效字符才可以结束输入,只读取空格前的内容,空格之后的内容不会被读取上,只有输入有效字符后才将后边输入的空格作为分隔符或者结束符。总之就是它不能得到有带空格的字符串。
  2. 对于nextLine()方法:以回车键作为结束符,可以获取到结束前所输入的一切字符串,包括空格、特殊字符等。

6️⃣实例

        给你们模拟一个场景,如何如何监听用户输入为日期格式的有效数据?对于这么个小的单元测试,我觉得你们大家肯定都能轻松写上来,唯独可能就是需要校验日期格式,因为如何匹配,给大家个参考,可以使用这个方法,hasNext(String pattern),其中pattern参数支持传入一个正则表达式,其中对于yyyy-MM-dd的日期格式正则写法为:[ ^\\d{4}-\\d{2}-\\d{2}$ ]。

    public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入一个日期格式为:yyyy-MM-dd的字符串:");//判读输入格式是否为指定的日期格式if (scanner.hasNext("^\\d{4}-\\d{2}-\\d{2}$")) {System.out.println("输入的日期为:"+scanner.next());}else {System.out.println("输入的日期格式错误!");}}

接下来我们来测试验证一下:

请输入一个日期格式为:yyyy-MM-dd的字符串:
1
输入的日期格式错误!

请输入一个日期格式为:yyyy-MM-dd的字符串:
2022-06-29
输入的日期为:2022-06-29 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/304230.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用自己的数据基于SWIFT微调Qwen-Audio-Chat模型

目录 使用自己的数据训练参数设置自己的数据准备语音转写任务语音分类任务 开始训练不同训练方法mpddpmp ddpdeepspeed 训练实例训练详情Qwen-Audio-Chat模型 模型数据实例官方可用的数据由内部函数处理为指定格式 训练好的模型测试 使用自己的数据 官方参考文档:…

微服务-网关

在微服务架构中,每个服务都是一个可以独立开发和运行的组件,而一个完整的微服务架构由一系列独立运行的微服务组成。其中每个服务都只会完成特定领域的功能,比如订单服务提供与订单业务场景有关的功能、商品服务提供商品展示功能等。各个微服…

南京航空航天大学-考研科目-513测试技术综合 高分整理内容资料-01-单片机原理及应用分层教程-单片机有关常识部分

系列文章目录 高分整理内容资料-01-单片机原理及应用分层教程-单片机有关常识部分 文章目录 系列文章目录前言总结 前言 单片机的基础内容繁杂,有很多同学基础不是很好,对一些细节也没有很好的把握。非常推荐大家去学习一下b站上的哈工大 单片机原理及…

同旺科技 USB TO SPI / I2C 专业版 极限测试 ---- 写入数据

所需设备: 1、USB 转 SPI I2C 适配器;内附链接 备注:带EXCEL调试的只适用于专业版; 软件配置: 设置如下,写入32766个字节,单条指令,速率20Mhz; 32766个字节不是适配器的极限&am…

Java使用aspose-words实现word文档转pdf

Java使用aspose-words实现word文档转pdf 1.获取转换jar文件并安装到本地maven仓库 aspose-words-15.8.0-jdk16.jar包下载地址:https://zhouquanquan.lanzn.com/b00g257yja 密码:965f 下载aspose-words-15.8.0-jdk16.jar包后,通过maven命令手动安装到本…

脑电放大 LM386

LM386介绍 LM386 是一种音频集成功放,具有自身功耗低、电压增益可调整电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。 电源电压 4-12V 或 5-18V(LM386N-4);静态消耗电流为 4mA;电压增益为20-200dB;在引脚1和8开路时&a…

SpringMVC--核心概念 / @RequestMapping注解

目录 1. 准备工作 1.1. 创建SpringMVC-demo02 子模块 1.2. 添加相关依赖 1.3. 设置 Maven 打包方式 1.4. 配置 web.xml 文件 1.4.1. 创建 web.xml 文件 1.4.2. 默认配置方式 1.4.3. 扩展配置方式 1.4.4. 注意点 1.5. 配置 Spring 文件 1.5.1. Thymeleaf视图解析器 …

RabbitMQ经典三问

RabbitMQ如何保证消息不会丢失? 可能会造成消息丢失的原因: 生产者方面,当生产者发送消息到 Broker 时,由于网络问题或者自身问题没有达到消息到达Broker,但是当 Broker 持久化的时候,RabbitMQ宕机消费者…

MacOS下Qt 5开发环境安装与配置

最近笔者在MacOS中使用Qt Creator开发Qt程序时遇到了一些问题,在网上查了不少资料,都没有找到解决方案,只有自己进行研究摸索了,今天晚上终于将目前遇到的问题全部解决了,特记录下来分享给大家。 笔者使用的是MacOS 1…

java+saas模式医院云HIS系统源码Java+Spring+MySQL + MyCat融合BS版电子病历系统,支持电子病历四级

javasaas模式医院云HIS系统源码JavaSpringMySQL MyCat融合BS版电子病历系统,支持电子病历四级 云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务,提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员…

智慧公厕中的大数据、云计算和物联网技术引领未来公厕管理革命

现代社会对于公共卫生和环境保护的要求越来越高,智慧公厕作为城市基础设施建设的重要组成部分,正引领着公厕管理的革命。随着科技的不断进步,大数据、云计算和物联网技术的应用为智慧公厕带来了全新的可能性,(ZonTree中…

网站SEO关键词规划时如何筛选出合适的关键词?

在网站SEO优化过程中,关键词布局是一个至关重要的环节。首先,我们需要确定核心关键词,然后通过各种策略和方法对关键词进行扩展。完成关键词扩展后,接下来的任务就是对这些扩展后的关键词进行筛选。那么,如何进行有效的…

AI大模型之ChatGPT科普(深度好文)

目录 训练ChatGPT分几步? 如何炼成ChatGPT? 如何微调ChatGPT? 如何强化ChatGPT? 如何调教ChatGPT? AI思维链是什么? GPT背后的黑科技Transformer是什么? Transformer在计算机视觉上CV最佳作品? ChatGPT是人…

【C++】STL--vector

目录 vector的使用 vector的定义 vector iterator的使用 vector空间增长问题 vector增删查改 vector深度剖析及模拟实现 vector核心接口模拟实现 使用memcpy拷贝问题 迭代器失效问题 vector的使用 vector的定义 C中,vector是一个模版,第一个参…

【Qt踩坑】ARM 编译Qt5.14.2源码-QtWebEngine

1.下载源码 下载网站:Index of /new_archive/qt/5.14/5.14.2/single 2.QWebEngine相关依赖 sudo apt-get install flex libicu-dev libxslt-dev sudo apt-get install libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev sudo apt-get …

Netty实现udp服务器

1、TCP与UDP通信协议 网络传输层协议有两种,一种是TCP,另外一种是UDP。 TCP是一种面向连接的协议,提供可靠的数据传输。TCP通过三次握手建立连接,并通过确认和重传机制,保证数据的完整性和可靠性。TCP适用于对数据准…

OpenHarmony南向开发实例:【智能可燃气体检测系统】

样例简介 本项目是基于BearPi套件开发的智能可燃气体检测Demo,该系统内主要由小熊派单板套件和和MQ5可燃气体检测传感器组成。 智能可燃气体检测系统可以通过云和手机建立连接,可以在手机上控制感应的阈值,传感器感知到的可燃气体浓度超过阈…

美国B2985A是德科技高阻表

181/2461/8938产品概述: 特点: 0.01 fA最小测量分辨率10便士?1000 V电源下的最大电阻测量每秒20,000次读数分辨率为6.5位数的测量范围图形查看模式(仪表、图表、直方图和滚动视图)易于使用的自动导航功能可选择最佳范…

系统更新Javahome之后,eclipse ide没有同步更新的解决方案

1、确认eclipse idea当前使用jdk 路径 : 2、确认Ide路径为旧的之后,去到eclipse的应用启动路径,编辑【eclipse.ini】, 在【-vmargs】之前设置vm路径(换行为必须的): -vm C:\Program Files\Java\jdk1.8.0_1…