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。

相关推荐
懒羊羊不懒@18 分钟前
Java基础语法—最小单位、及注释
java·c语言·开发语言·数据结构·学习·算法
ss27322 分钟前
手写Spring第4弹: Spring框架进化论:15年技术变迁:从XML配置到响应式编程的演进之路
xml·java·开发语言·后端·spring
DokiDoki之父33 分钟前
MyBatis—增删查改操作
java·spring boot·mybatis
兩尛1 小时前
Spring面试
java·spring·面试
Java中文社群1 小时前
服务器被攻击!原因竟然是他?真没想到...
java·后端
Full Stack Developme1 小时前
java.nio 包详解
java·python·nio
零千叶1 小时前
【面试】Java JVM 调优面试手册
java·开发语言·jvm
代码充电宝2 小时前
LeetCode 算法题【简单】290. 单词规律
java·算法·leetcode·职场和发展·哈希表
li3714908902 小时前
nginx报400bad request 请求头过大异常处理
java·运维·nginx
摇滚侠2 小时前
Spring Boot 项目, idea 控制台日志设置彩色
java·spring boot·intellij-idea