Java学习总结:50(扫描流:Scanner)
扫描流:Scanner
Scanner类定义在java.util包中,所以此类是一个工具类,利用它可以方便地实现数据的输入操作。
Scanner实现了Iterator(迭代)接口与Closeable接口。
Scanner类中定义的常用方法如下:
No. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public Scanner(InputStream source) | 构造 | 接收InputStream输入流对象,此为输入源 |
2 | public boolean hasNext() | 普通 | 判断是否有数据输入 |
3 | public String next() | 普通 | 取出输入数据,以String形式返回 |
4 | public boolean hasNextXxx() | 普通 | 判断是否有指定类型数据存在 |
5 | public 数据类型 nextXxx() | 普通 | 取出指定类型的数据 |
6 | public Scanner useDelimiter(String pattern) | 普通 | 设置读取的分隔符 |
例:利用Scanner实现键盘数据输入
package Project.Study.ScannerClass;import java.util.Scanner;public class Test1 {public static void main(String[]args){Scanner scanner = new Scanner(System.in); //准备接收键盘输入数据System.out.println("请输入内容:"); //提示信息if (scanner.hasNext()){ //是否有输入数据System.out.println("输入内容为:"+scanner.next()); //存在内容则输出}scanner.close();}
}
//结果:
//请输入内容:
//111213hahah
//输入内容为:111213hahah
例:判断输入的数据类型
package Project.Study.ScannerClass;import java.util.Scanner;public class Test2 {public static void main(String[]args){Scanner scanner = new Scanner(System.in);//准备接收键盘输入数据System.out.println("请输入成绩:");if (scanner.hasNextDouble()){ //表示输入的是一个小数double score = scanner.nextDouble(); //省略了转型System.out.println("成绩为:"+score);}else{ //表示输入的不是一个数字System.out.println("输入的不是数字");}scanner.close();}
}
//结果:
//请输入成绩:
//haha
//输入的不是数字
//请输入成绩:
//100
//成绩为:100.0
Scanner类中除了支持各种常用的数据类型外,也可以在输入数据时使用正则表达式来进行验证。
例:正则验证
package Project.Study.ScannerClass;import java.util.Scanner;public class Test3 {public static void main(String[]args){Scanner scanner = new Scanner(System.in); //准备接收键盘输入数据System.out.println("请输入生日:");if (scanner.hasNext("\\d{4}-\\d{1,2}-\\d{1,2}")){ //正则验证String str = scanner.next("\\d{4}-\\d{1,2}-\\d{1,2}");//接收数据System.out.println("生日为:"+str);}else{ //数据格式错误System.out.println("输入的生日格式错误!");}scanner.close();}
}
//结果:
//请输入生日:
//2020-4-27
//生日为:2020-4-27
//请输入生日:
//2020 4 27
//输入的生日格式错误!
在Scanner类的构造里面由于接收的是InputStream,所以依然可以设置一个文件的数据流。考虑到文件本身会存在多行内容,所以需要考虑读取的分隔符问题(默认是空格为分隔符,例如:空格或换行),这样在读取前就必须使用“useDelimiter()”方法来设置分隔符。
例:读取文件
package Project.Study.ScannerClass;import java.io.File;
import java.io.FileInputStream;
import java.util.Scanner;public class Test4 {public static void main(String[]args)throws Exception{Scanner scanner = new Scanner(new FileInputStream(new File("d:"+File.separator+"Test"+File.separator+"test.txt"))); //设置读取的文件输入流scanner.useDelimiter("\n"); //设置读取的分隔符while (scanner.hasNext()){ //循环读取System.out.println(scanner.next()); //直接输出读取数据}scanner.close();}
}
//结果:
//Hello World!!!
//Hi!!!
Java学习总结:50(扫描流:Scanner)相关推荐
- 【Java基础】Java IO编程:输入输出流、内存流、打印流、缓冲流BufferedReader、扫描流Scanner、序列化与反序列化
文章目录 第11章.Java IO编程 11.1 文件操作类:File 11.2 字节流与字符流 字节输出流:OutputStream OutputStream类 FileOutputStream类 ...
- Java学习——Day13:IO流
6.1 File类 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File 能新建.删除.重命名文件和目录,但 File 不能访问文件内容本身. 如果需要访问文件内容本身, ...
- 嘉明的Java学习(6)之Scanner与if...语句
嘉明的Java学习(6) 学习资料来源:B站传智博学谷 内容: (1)Scanner的使用步骤与语句 (2)使用Scanner做一次简单的计算 (3)流程控制结构 (4)if语句的运用 (5)swit ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
- Java学习之代码扫描工具的使用方法
有些刚进行Java学习的小伙伴对Java代码扫描工具还不是很了解,不知道该如何使用,下面千锋重庆的小编就来告诉大家使用方法. 1.插件的安装 由于使用的mac所有以Mac下idea插件安装流程为例,首 ...
- java学习笔记-初学IO流
目 录 什么是IO IO流的分类 Java中的IO流 java中需要掌握的流:16个 字节流 java.io.FileInputStream(字节输入流) java.io.FileOutputStre ...
- Java学习第六天<用户交互Scanner与进阶使用><顺序结构><选择结构><循环结构1>
用户交互Scanner与进阶使用 public class Demo01 {public static void main(String[] args) {//创建一个扫描对象,用于接收键盘数据Sca ...
- Java学习之I/O流
最近学习了I/O,按照老规矩写上一篇. I/O流 什么是I/O流? 流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为 ...
- Java学习笔记之[ 利用扫描仪Scanner进行数据输入 ]
/*********数据的输入********/ /**利用扫描仪Scanner进行数据输入 怎么使用扫描仪Scanner *1.放在类声明之前,引入扫描仪 import java.util.Scan ...
最新文章
- 1+1大于2 联想借东风破浪HPC市场
- python课程是学什么的-Python课程包括哪些内容?
- Android Service和Binder、AIDL
- leader选举的源码分析-QuorumPeer.start
- SpringBoot多数据源(主从数据源)配置
- 面向对象的理解及相关概念(封装,继承,多态)
- silverlight 学习笔记 (七):Prism的第一个应用
- 【网络安全入门大总结】—Java语言中常用的渗透漏洞大汇总
- Jmeter 常用断言使用
- 五分钟学会python函数_五分钟带你搞懂python 迭代器与生成器
- POJ--3984--迷宫问题
- [ZJOI2010]排列计数
- 世界上第一块商用微型处理器4004
- 为什么黑洞远程控制的屏幕传输比Radmin快
- ubuntu 调 2K 分辨率
- centos关闭自动锁屏
- “宁做创业狼,不做打工狗” 创业者与打工者的区别丨国仁网络资讯
- spring cloud eureka 样式wro.css wro.js 404
- 【ESP32_8266_BT篇(二)】Beacon信标广播
- uniapp开发获取用户位置信息功能解析