Day11-Scanner

news/2024/10/7 18:15:54/文章来源:https://www.cnblogs.com/xiaokunzhong/p/18450387

Day11-Scanner

Scanner介绍

Scanner 对象:

之前我们学的基本语法中我们并没有实现程序和人的交互,但是 Java 给我们提供了这样一个工具类,我们可以获取用户的输入。

java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。

基本语法:

Scanner s = new Scanner(System.in);

通过 Scanner 类的 next()与 nextLine()方法获取输入的字符串:在读取前我们一般需要使用 hasNext()与 hasNextLine()判断是否还有输入的数据。

java.util.Scanner 的解读:

“java.util.Scanner” 是 Java 编程语言中的一个类。

“java.util” 是 Java 标准库中的一个包(package)名称,这个包中包含了很多实用的工具(utility)类和接口。

“Scanner” 是其中的一个类,它主要用于从标准输入(通常是键盘输入)、文件等来源中读取数据。它提供了方便的方法来解析各种基本数据类型和字符串。

next()与 nextLine()方法分别的用法

一、next()方法

  • next()方法会从输入流中读取下一个单词(以空白字符分隔)。

  • 它会在遇到空白字符(如空格、制表符、换行符等)时停止读取,并返回当前读取到的内容。

  • 假设用户输入 “hello world”,next()方法只会读取到 “hello”,因为它在遇到第一个空白字符时就停止了读取。

    //创建一个扫描器对象,用于接收键盘数据Scanner scanner = new Scanner(System.in);System.out.println("使用next方法接收:");//判断用户有没有输出字符串if(scanner.hasNext()){//使用next方法接收——接收单个单词关闭String str=scanner.next();    //程序会等到用户输入System.out.println("输入的内容为:"+str);}//属于IO流的类,用完就关闭,否则一直占用资源!!!!!!!!!!!!scanner.close();//关闭
    

    输入Hello world时,只输出一个Hello

    使用next方法接收:
    Hello world
    输入的内容为:Hello
    

二、nextLine()方法

  • nextLine()方法会读取输入流中的一整行内容,包括空白字符。
  • 它会读取到当前行的末尾(换行符处),并返回包括换行符之前的所有字符。
 Scanner scanner = new Scanner(System.in);System.out.println("使用nextline方法接收:");if(scanner.hasNextLine()){String str = scanner.nextLine();System.out.println("输出的结果为:"+str);}scanner.close();

hasNext()

在 Java 中,Scanner类的hasNext()方法用于判断输入流中是否还有下一个输入项(token)。

具体解释如下:

一、返回值及用途

  1. 返回值类型:这个方法返回一个布尔值。如果输入流中还有下一个输入项可读取,它就返回true;如果没有更多的输入项可读取,它就返回false
  2. 常见用途:通常在一个循环中使用这个方法来不断检查是否有更多的输入,以便决定是否继续读取输入。

二、输入项的概念

  1. 定义:输入项是指通过输入流提供的、以分隔符(如空格、换行符等)分隔的一块数据。具体的分隔规则取决于Scanner的构造方式和默认的分隔模式。
  2. 示例:如果用户在控制台输入 “hello world”,这里面的 “hello” 和 “world” 可以分别被看作两个输入项。如果输入的是一个整数,那么这个整数就是一个输入项。

三、与其他方法配合使用

  1. next()方法配合:通常在使用next()方法读取输入项之前,先使用hasNext()方法进行判断,以确保不会在没有输入项可读取时调用next()方法而导致异常。

遇见某一个类,选中,按住Ctrl键,单击鼠标,就进入了类的源代码

实际应用:判断输入的是不是整数/小数

Scanner scanner = new Scanner(System.in);//从键盘接收数据int i1=0;float i2=0.0f;System.out.println("请输入整数:");if(scanner.hasNextInt()){i1 = scanner.nextInt();System.out.println("输入的整数是:"+i1);}else {System.out.println("你输入的不是整数");}System.out.println("请输入小数:");if(scanner.hasNextFloat()){i2 = scanner.nextFloat();System.out.println("输入的小数是:"+i2);}else {System.out.println("你输入的不是小数");}scanner.close();

实际应用:将输入的数据求和、求平均值

//我们可以输入多个数字,并求其总和与平均数。每输入一个数字用回车确认。通过输入非数字来结束输入并输出执行结果。Scanner scanner = new Scanner(System.in);System.out.println("请输入:");//和double sum=0;//有多少个数int num=0;//通过循环判断是否有数字,并进行求和和数量统计while(scanner.hasNextDouble()){sum+=scanner.nextDouble();num=num+1;//num++System.out.println("你输入了第"+num+"个数,当前的和是"+sum);}System.out.println(num+"个数的和是"+sum);System.out.println(num+"个数的平均数:"+(sum/num));scanner.close();

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

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

相关文章

多校A层冲刺NOIP2024模拟赛03

多校A层冲刺NOIP2024模拟赛03\(T1\) A. 五彩斑斓(colorful) \(90/100pts\)部分分\(20pts\) :枚举左上 \((k,h)\) 、右下端点 \((i,j)\) ,时间复杂度为 \(O(n^{2}m^{2})\) 。 \(90/100pts\) :当 \(a_{i,j} \ne a_{k,j}\) 时任意的 \(h \in [1,j]\) 都符合题意、不妨钦定 \(…

Word中 Endnote 引用标蓝色

1. 打开word中的endnote加载项。如图所示,勾选这两个设置。 确认后会自动变为超链接,显示蓝色以及下划线。 2. 在样式设置中,将超链接的下划线取消。之后就会只显示蓝色引用。 结果显示:

中国大学生程序设计竞赛(秦皇岛)正式赛东北大学秦皇岛分校(SMU Autumn 2024 Team Round 1)

中国大学生程序设计竞赛(秦皇岛)正式赛东北大学秦皇岛分校(SMU Autumn 2024 Team Round 1) Problem A. 贵校是构造王国吗 I 思路 官方题解很清晰明了。代码 #include <bits/stdc++.h> using namespace std; #define int long long #define endl \n #define PII pair&…

多校 A 层冲刺 NOIP2024 模拟赛 03

多校 A 层冲刺 NOIP2024 模拟赛 03 T1 五彩斑斓(colorful) 签到题 直接暴力枚举是 \(O(n^4)\) ,考虑使用 \(bitset\) 优化,对每个点开个 \(bitset\),预处理它所在一行它及它之前相同颜色的位置,这样就只用枚举另一个点所在列,时间复杂度为 \(O(n^3+\frac{n^4}{w})\)。 T…

在浏览器上访问媒体资源配置【文件上传】

1.根urls.py文件中 from django.contrib import admin from django.urls import path, include, re_path from django.views.static import serve from django.conf import settingsurlpatterns = [# path(admin/, admin.site.urls),path(api/shipper/, include(apps.shipper.u…

高级程序语言设计第二次作业

姓名:袁志华 班级:软件工程2班 学号:102400231 班级网址:https://edu.cnblogs.com/campus/fzu/2024C 作业网址:https://edu.cnblogs.com/campus/fzu/2024C/homework/13282 图片: 第一题: 第二题: 第三题: 第四题: 第五题: 第六题: 第七题: 第八题:程序清单: 3.1…

macOS Sequoia 15.0.1 (24A348) 正式版 ISO、IPSW、PKG 下载

macOS Sequoia 15.0.1 (24A348) 正式版 ISO、IPSW、PKG 下载macOS Sequoia 15.0.1 (24A348) 正式版 ISO、IPSW、PKG 下载 iPhone 镜像、Safari 浏览器重大更新和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:https://sysin.org/blog/macOS-Sequoi…

人群聚集监测预警系统

人群聚集监测预警系统采用AI视频智能分析技术,人群聚集监测预警系统通过在工地、工厂等场所已经安装监控摄像头,人群聚集监测预警系统对人员聚集情况进行实时监测,当人群聚集过于密集时,系统将自动发出警报,人群聚集监测预警系统并通过人工智能算法对人员的状态进行识别和…

智能烟火识别预警软件

智能烟火识别预警软件采用人工智能技术,智能烟火识别预警软件在工厂、工地等场所利用已经安装的摄像头,智能烟火识别预警软件对场内的烟花爆竹进行实时监测。当场内出现烟花爆竹时,智能烟火识别预警软件将自动发出警报,并通过人工智能算法通知现场管理人员进行处理。智能烟…

脱岗监测预警系统

脱岗监测预警系统可以通过对工人的位置进行实时监测,脱岗监测预警系统识别是否存在脱岗行为,并及时发出警报。脱岗监测预警系统在工作过程中,如果工人离开其工作位置,脱岗监测预警系统会自动识别并发出警报,提醒管理人员采取措施防止事故的发生。脱岗监测预警系统可以通过…

非煤矿山电子封条系统部署方案

非煤矿山电子封条系统部署方案是基于Ai视频图像识别技术,非煤矿山电子封条系统部署方案通过人工智能算法在矿山设备上安装电子封条,监控矿山矿井出入井人员、人员变化及非煤矿山生产作业状态等状况,及时发现处理非煤矿山异常动态将自动发出警报,及时通知现场管理人员进行处…

加油站员工行为监测预警系统

加油站员工行为监测预警系统可以通过对加油站员工进行实时监控,加油站员工行为监测预警系统识别是否存在不规范行为,并及时发出警报。在卸油作业过程中,加油站员工行为监测预警系统监测员工灭火器的正确放置、静电释放操作规范等作业状态,及时发出警报,提醒工作人员采取措…