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。

相关推荐
SamDeepThinking11 分钟前
并发量就算只有2,该上锁还得上呀
java·后端·架构
Sam_Deep_Thinking27 分钟前
如何让订单系统和营销系统解耦
java·架构·系统架构
lzhdim1 小时前
SQL 入门 12:SQL 视图:创建、修改与可更新视图
java·大数据·服务器·数据库·sql
FQNmxDG4S2 小时前
Maven依赖管理:版本冲突解决与生命周期控制
java·数据库·maven
傻瓜搬砖人2 小时前
Spring集成Web环境
java·spring·maven
FQNmxDG4S2 小时前
Java泛型编程:类型擦除与泛型方法的应用场景
java·开发语言·python
GottdesKrieges3 小时前
OceanBase恢复常见问题
java·数据库·oceanbase
IGAn CTOU3 小时前
Java高级开发进阶教程之系列
java·开发语言
leo825...3 小时前
Claude Code Skills 清单(本地)
java·python·ai编程
NGSI vimp3 小时前
Java进阶——如何查看Java字节码
java·开发语言