java115

Scanner类

**

打印流解决的是output stream的缺陷,BufferedReader解决的是Input Stream的缺陷,而java.util.Scanner解决的是BufferedReader类的缺陷(替换了BufferedReader类)。

Scanner是一个专门进行输入流处理的程序类,利用这个类,可以方便的处理各种数据类型,同时也可以直接结合正则表达式进行各项处理。

在这个类中主要关注以下的几个方法:

1.判断是否有指定类型的数据:Public boolean hasNextXxx():

2.取得指定类型的数据:public数据nextXxx()

3.定义分割符:public scanner useDelimiter(String pattern);

4.构造方法:public scanner(InputStream source)

范例1:使用scanner实现数据的输入

java 复制代码
package cn. mldn . demo;

import java . util .Scanner;

public class TestDemo {

public static void main(String[] args) throws Exception {

Scanner scan = new Scanner(System.in) ;

System. out . print("请输入数据: " );

if (scan.hasNext()) { //现在有输入内容,不判断空字符串

System. out . println(" 【ECHO】 输入内容为: " + scan.next());

}

scan. close();

}

}

代码执行:请输入数据:hello

【ECHO】输入内容为:hello

这就要比BufferedReader更简单。

使用scanner的输入,还可以接收各种数据类型,并且帮助用户减少转型的处理。

范例2:接收其他类型

java 复制代码
package cn. mldn . demo;

import java . util .Scanner;

public class TestDemo {

public static void main(String[] args) throws Exception {

Scanner scan = new Scanner(System.in) ;

System. out . print("请输入年龄: " );

if (scan.hasNextInt()) { //现在有输入内容,不判断空字符串

Int age =scan.NextInt();

System. out . println(" 【ECHO】 输入内容为: " + age);

}else{

System. out . println(ERROR:输入的不是数字!")

}

scan. close();

}

}

代码执行:请输入年龄:fgsdafsd

ERROR:输入的不是数字!

请输入年龄:10

【ECHO】:输入内容为:10

最为重要的问题它可以对接收的数据类型使用正则表达式进行判断。

范例:利用正则进行判断

java 复制代码
package cn. mldn . demo;

import java . util .Scanner;

public class TestDemo {

public static void main(String[] args) throws Exception {

Scanner scan = new Scanner(System.in) ;

System. out . print("请输入生日: " );

if(scan.hasNext("\\d{4}-\\d{2}-\\d{2}")){

String birthday=scan.next("\\d{4}-\\d{2}-\\d{2}");

System.out.println("【ECHO】"+birthday);

}

scan. close();

}

}

代码执行:请输入生日:1111-11-11

【ECHO】1111-11-11

但是以上的操作在开发之中,基本上是不会出现的,因为不可能让你编写一个命令行程序进行数据的输入操作。

使用Scanner本身能够接收的是一个input stream类的对象。那么也就意味着可以接收任意的输入流,例如:文件输入流;

canner实际上完美的替代了BufferedReader,而且更好的实现了Input Stream的操作。

二、总结

以后除了二进制的文件拷贝的处理之外,那么只要是针对于程序的信息输出都使用打印流,信息输入都使用Scanner。

相关推荐
哦虎!3 小时前
【JavaEE】网络初识
java
for_ever_love__3 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
我是人✓4 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
欣栀♡4 小时前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
IT研究室5 小时前
最新计算机毕业设计选题推荐-基于spring boot的葡萄酒文化宣传网站-网站-文档指导-Java-springboot
java·spring boot·课程设计
慧都小项5 小时前
MyEclipse 中创建和测试 JAX-RS REST 接口:从项目配置到 REST Explorer
java·restful·myeclipse·jax-rs
Wang's Blog5 小时前
Java 项目实战: 交友项目 - 入门案例:编写 Dubbo 服务提供者
java·dubbo·交友
秋饼5 小时前
Spring AI 2.0 结构化输出企业级实战:从 BeanOutputConverter 源码到生产级解析容错
java·ai·技术分享·后端开发
摇滚侠5 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y5 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python