扫描流: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)相关推荐

  1. 【Java基础】Java IO编程:输入输出流、内存流、打印流、缓冲流BufferedReader、扫描流Scanner、序列化与反序列化

    文章目录 第11章.Java IO编程 11.1 文件操作类:File 11.2 字节流与字符流 字节输出流:OutputStream OutputStream类 FileOutputStream类 ...

  2. Java学习——Day13:IO流

    6.1 File类 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File 能新建.删除.重命名文件和目录,但 File 不能访问文件内容本身. 如果需要访问文件内容本身, ...

  3. 嘉明的Java学习(6)之Scanner与if...语句

    嘉明的Java学习(6) 学习资料来源:B站传智博学谷 内容: (1)Scanner的使用步骤与语句 (2)使用Scanner做一次简单的计算 (3)流程控制结构 (4)if语句的运用 (5)swit ...

  4. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

  5. Java学习之代码扫描工具的使用方法

    有些刚进行Java学习的小伙伴对Java代码扫描工具还不是很了解,不知道该如何使用,下面千锋重庆的小编就来告诉大家使用方法. 1.插件的安装 由于使用的mac所有以Mac下idea插件安装流程为例,首 ...

  6. java学习笔记-初学IO流

    目 录 什么是IO IO流的分类 Java中的IO流 java中需要掌握的流:16个 字节流 java.io.FileInputStream(字节输入流) java.io.FileOutputStre ...

  7. Java学习第六天<用户交互Scanner与进阶使用><顺序结构><选择结构><循环结构1>

    用户交互Scanner与进阶使用 public class Demo01 {public static void main(String[] args) {//创建一个扫描对象,用于接收键盘数据Sca ...

  8. Java学习之I/O流

    最近学习了I/O,按照老规矩写上一篇. I/O流 什么是I/O流? 流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为 ...

  9. Java学习笔记之[ 利用扫描仪Scanner进行数据输入 ]

    /*********数据的输入********/ /**利用扫描仪Scanner进行数据输入 怎么使用扫描仪Scanner *1.放在类声明之前,引入扫描仪 import java.util.Scan ...

最新文章

  1. 1+1大于2 联想借东风破浪HPC市场
  2. python课程是学什么的-Python课程包括哪些内容?
  3. Android Service和Binder、AIDL
  4. leader选举的源码分析-QuorumPeer.start
  5. SpringBoot多数据源(主从数据源)配置
  6. 面向对象的理解及相关概念(封装,继承,多态)
  7. silverlight 学习笔记 (七):Prism的第一个应用
  8. 【网络安全入门大总结】—Java语言中常用的渗透漏洞大汇总
  9. Jmeter 常用断言使用
  10. 五分钟学会python函数_五分钟带你搞懂python 迭代器与生成器
  11. POJ--3984--迷宫问题
  12. [ZJOI2010]排列计数
  13. 世界上第一块商用微型处理器4004
  14. 为什么黑洞远程控制的屏幕传输比Radmin快
  15. ubuntu 调 2K 分辨率
  16. centos关闭自动锁屏
  17. “宁做创业狼,不做打工狗” 创业者与打工者的区别丨国仁网络资讯
  18. spring cloud eureka 样式wro.css wro.js 404
  19. 【ESP32_8266_BT篇(二)】Beacon信标广播
  20. uniapp开发获取用户位置信息功能解析

热门文章

  1. 模仿滴滴单车解锁的时候,从0%到90%的欺骗加载动画效果
  2. 在MacBook Pro 2015上安装iTerm2笔记
  3. 站在历史的长河中做农活
  4. 一小时Thinkphp后台(2)
  5. __bridge 使用注意
  6. 《对软件工程课程的期望》
  7. Hadoop概念学习系列之为什么hadoop/spark执行作业时,输出路径必须要不存在?(三十九)...
  8. 乐意使人恐惧,源于自身的空虚
  9. SVO 半直接视觉里程计
  10. .Net2.0 使用ConfigurationManager读写配置文件