java零基础入门-Scanner类

news2024/11/25 21:14:37

目录

1.概念

2.常用api

3.next()方法

4.nextLine()方法

5.next()与nextLine()区别

6.实例


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);
    }

请输入一个字符串
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()区别

  • 对于next()方法:一定要读取到有效字符才可以结束输入,只读取空格前的内容,空格之后的内容不会被读取上,只有输入有效字符后才将后边输入的空格作为分隔符或者结束符。总之就是它不能得到有带空格的字符串。
  • 对于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.coloradmin.cn/o/90461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于云原生的集群自愈系统 Flink Cluster Inspector

作者: 舟柒、楼台 1. 业务背景与挑战 1.1 实时计算集群现状 关于热点机器处理一直是阿里云 Flink 集群运维的一大痛点,不管在日常还是大促都已经是比较严重的问题,同时这也是分布式系统的老大难问题。而在今年整个阿里云成本控制的背景下,…

Flink 1.16:Hive SQL 如何平迁到 Flink SQL

摘要:本文整理自 Apache Flink PMC&Committer 伍翀(云邪)在 9 月 24 日 Apache Flink Meetup 的演讲。主要内容包括:Hive SQL 迁移的动机Hive SQL 迁移的挑战Hive SQL 迁移的实践Hive SQL 迁移的演示未来规划Tips:…

班级网页制作 HTML个人网页设计 我的班级网站设计与实现 大学生简单班级静态HTML网页设计作品 DIV布局班级网页模板代码 DW学生校园网站制作成品下载

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

【数据库数据恢复】SQL server数据库被加密怎么恢复数据?

SQL server数据库故障: SQL server数据库和备份文件被加密,无法使用。数据库MDF、LDF、log日志文件名字被修改。 SQL server数据库数据恢复过程: 1、首先对故障数据库所涉及到的硬盘进行镜像备份,避免对原始数据造成二次破坏&…

python大作业高分项目--射击闯关游戏

项目功能: 地图编辑器:可以实现玩家自己定义每一关卡的样式和难易程度 运行界面:实现了玩家的移动,跳跃,发射子弹,投掷手雷,以及敌人的AL(移动,发射子弹,扔…

Word处理控件Aspose.Words功能演示:在 Python 中将 HTML 转换为 PNG、JPEG、BMP、GIF 或 TIFF 图像

Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。 HTML (超文本标记语言)是所有浏览器都支持的主要网页文件格式。它经常用于将数据和信息显示为网页。在某些情况下,我们…

迎接工业互联网的龙卷风暴,软通动力绘制了一张转型地图

《绿野仙踪》一书的开始,主角多萝西被一股龙卷风卷起来,从此离开了平凡无奇的堪萨斯州,来到神奇的奥兹国。这种让人一步登天、进入仙境的“龙卷风暴”,也在科技行业不停上演。在微型计算机和个人电脑PC这两场大型龙卷风市场中&…

cdr最新软件下载2023中文版电脑64位免费安装包

CorelDRAW Graphics Suite2023涵盖了全部CorelDRAW图形处理组件,是一款智能高效的平面设计软件,广泛应用于排版印刷、矢量图形编辑及网页设计等领域,30多年来无数优秀的设计师通过CorelDRAW大胆展现真我,交付了出众的创意作品&…

web前端期末大作业——仿小米商城电商平台(6页) html+css+javascript网页设计实例 企业网站制作

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

【面试】RabbitMQ面试题答案整理

1、RabbitMQ routing路由模式 1、 消息生产者将消息发送给交换机按照路由判断,路由是字符串(info) 当前产生的消息携带路由字符(对象的方法),交换机根据路由的key,只能匹配上路由key对应的消息队列,对应的消费者才能消费消息; 2、 根据业务功能定义路由字符串 3、 从系统的…

关于IPv6升级改造的政策文件汇总-中科三方

一、《推进互联网协议第六版(IPv6)规模部署行动计划》 发布时间:2017年11月 发文单位:中共中央办公厅、国务院办公厅 主要内容:用5到10年时间,形成下一代互联网自主技术体系和产业生态,建成全…

Matlab论文插图绘制模板第70期—带误差棒的柱状图(Bar with Errorbar)

在之前的文章中,分享了一系列Matlab柱状图的绘制模板: 这一次,再来分享一种特殊的柱状图:带误差棒的柱状图。 先来看一下成品效果: 特别提示:Matlab论文插图绘制模板系列,旨在降低大家使用Matl…

直播倒计时 1 天 | SOFAChannel#31 RPC 框架设计的考和量

SOFARPC 是蚂蚁集团开源的一款基于 Java 实现的 RPC 服务框架,为应用之间提供远程服务调用能力,具有高可伸缩性,高容错性,目前蚂蚁集团所有的业务的相互间的 RPC 调用都是采用 SOFARPC。SOFARPC 为用户提供了负载均衡,…

全网唯一,不忽悠的ChatGPT

Datawhale干货 作者:Ben,中山大学,Datawhale成员最近ChatGPT火出圈了,它和前阵子的Stable Diffusion(AIGC)一样成为社交媒体上人们津津乐道的话题。“ChatGPT要取代谷歌搜索了?”“ChatGPT要让程…

制作 Python Docker 镜像的最佳实践

概述 📚️Reference: 制作容器镜像的最佳实践 这篇文章是关于制作 Python Docker 容器镜像的最佳实践。(2022 年 12 月更新) 最佳实践的目的一方面是为了减小镜像体积,提升 DevOps 效率,另一方面是为了提高安全性。希望对各位有所…

无忧·企业文档,为企业客户的场景而思考

作为无忧企业文档的设计者,常常被问到一个问题,这个和腾X文档有什么区别?其实这个问题我口头回答了很多次,这次,我将这个问题做个记录与分析。 主要是有以下几个方面不同: 1、客户定位不同 2、核心功能不…

Java基础疑难点梳理(泛型到反射9章内容)

文章目录1. 泛型2. 基础类库3. 集合4. 异常5. 注解6. JDBC7. IO流8. 网络编程9. 类加载和反射1. 泛型 静态方法的形参,静态变量,静态代码块中不能使用泛型(因为即使泛型不同,还是同一个类,静态变量是属于类的&#xff…

锂电池实验室规划设计方案 | 喜格SICOLAB

锂电池实验室规划设计方案 | 喜格SICOLAB 锂电池生产基本工序 正负极混料、涂布、辊压、干燥、裁切、卷绕或叠片、封装、注液、化成、检测、出货等。锂电池实验室设计标准 1、《电子工业洁净厂房设计规范》GB50472-2008 2、《锂离子电池工厂设计标准》GB 51377-2019 《工业建筑…

在 Python 中使用 cv2 进行嗜睡检测

大家好,在这个博客中,我们将构建一个嗜睡检测应用程序,它将检测视频中的人是否变得昏昏欲睡。这是一个非常有趣且简单的项目,代码甚至不到 80 行,让我们开始吧看看最终输出注意——你不会在这里听到警报声,…

Stm32旧版库函数12——定时器的使用\time1

#include "stm32f10x_lib.h" #include "usart.h" #include "delay.h" #include "sys_config.h" #include <math.h> //Keil library #define uchar unsigned char #define uint unsigned int //通用定时器中断初始…