JAVA IO:Scanner类
使用Scanner类接收输入数据。
JAVA提供了专门的输入数据类,此类可以完成BufferedReader类的功能,也可以方便的对输入数据进行验证,此类存放于JAVA.UTILL包中。
常用方法如下:

此类不在java.io中,而在java.utill类,所以此类是一个工具类。
1,使用Scanner接收键盘输入数据
package 类集;
import java.util.* ;
public class ScannerDemo01{
public static void main(String args[]){
Scanner scan = new Scanner(System.in) ; // 从键盘接收数据
System.out.print("输入数据:") ;
String str = scan.next() ; // 接收数据
System.out.println("输入的数据为:" + str) ;
}
};
运行结果:
输入数据:2123
输入的数据为:2123
比直接使用BufferedReader类方便,但是以上程序还是存在问题。
如果输入数据之间存在空格,会以空格为分隔符。如果要想输入空格,则必须修改分隔符,将分隔符变成"\n"。
Pattern delimiter() 返回此 Scanner 当前正在用于匹配分隔符的 Pattern。
修改分隔符:
package 类集;
import java.util.* ;
public class ScannerDemo01{
public static void main(String args[]){
Scanner scan = new Scanner(System.in) ; // 从键盘接收数据
System.out.print("输入数据:") ;
scan.useDelimiter("\n") ; //表示以换行作为分隔符,也就是说,按回车键后才会把数据分割。而取代了之前的空格
String str = scan.next() ; // 接收数据
System.out.println("输入的数据为:" + str) ;
}
};
输入结果:
输入数据:3243 423423 43242
输入的数据为:3243 423423 43242
之前输入都是以字符串形式返回,实际上也可以使用Scanner方便返回整数或者小数。
有以下方法:
接收整数:
1,判断是否是整数,如果是,返回true:hasNextInt()。
2,public int getInt();
接收小数:
1,判断是否小数,:hasNextFloat()
2,public float getFloat()
package 类集;
import java.util.* ;
public class ScannerDemo01{
public static void main(String args[]){
Scanner scan = new Scanner(System.in) ; // 从键盘接收数据
int i = 0 ;
float f = 0.0f ;
System.out.print("输入整数:") ;
if(scan.hasNextInt()){ // 判断输入的是否是整数
i = scan.nextInt() ; // 接收整数
System.out.println("整数数据:" + i) ;
}else{
System.out.println("输入的不是整数!") ;
}
System.out.print("输入小数:") ;
if(scan.hasNextFloat()){ // 判断输入的是否是小数
f = scan.nextFloat() ; // 接收小数
System.out.println("小数数据:" + f) ;
}else{
System.out.println("输入的不是小数!") ;
}
}
};
运行结果:
输入整数:32
整数数据:32
输入小数:12312
小数数据:12312.0
处理日期类型
Scanner类虽然可以接受各种类型,但是对于日期型却无法接收!
如果要想接收Data类型的数据,只能通过字符串转型,但是接收的时候依然可以使用Scanner类中提供的方法验证:
验证:public String hasnext(Pattern pattern)
接收:public String netxt(Pattern pattern)
package 类集;
import java.text.SimpleDateFormat;
import java.util.* ;
public class ScannerDemo01{
public static void main(String args[]){
Scanner scan = new Scanner(System.in) ; // 从键盘接收数据
String str = null ;
Date date = null ;
System.out.print("输入日期(yyyy-MM-dd):") ;
if(scan.hasNext("^\\d{4}-\\d{2}-\\d{2}$")){ // 判断
str = scan.next("^\\d{4}-\\d{2}-\\d{2}$") ; // 接收
try{
date = new SimpleDateFormat("yyyy-MM-dd").parse(str) ; //字符串转换成日期类型。
}catch(Exception e){}
}else{
System.out.println("输入的日期格式错误!") ;
}
System.out.println(date) ;
}
};
运行结果:
输入日期(yyyy-MM-dd):2032-90-90
Mon Aug 29 00:00:00 CST 2039
还可以直接从文件中读取信息。
package 类集;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.* ;
public class ScannerDemo01{
public static void main(String args[]){
File f = new File("D:" + File.separator + "test.txt") ; // 指定操作文件
Scanner scan = null ;
try{
scan = new Scanner(f) ; // 从文件中接收数据
}catch(Exception e){}
StringBuffer str = new StringBuffer() ;
while(scan.hasNext()){
str.append(scan.next()).append('\n') ; // 取数据,这里默认以空格作为分隔符
}
System.out.println("文件内容为:" + str) ;
}
};
运行结果:
文件中内容如下:

实际读取结果:(因为他默认以空格为分隔符)
文件内容为:321312312312
43
3432
JAVA IO:Scanner类的更多相关文章
- Java中Scanner类和BufferReader类之间的区别
java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串.它本质上是使用正则表达式去读取不同的数据类型. Java.io.BufferedReader类为了能够高效的 ...
- 转:Java中Scanner类和BufferReader类之间的区别
原文地址:https://blog.csdn.net/u014717036/article/details/52227782 java.util.Scanner类是一个简单的文本扫描类,它可以解析基本 ...
- java.io.File类
java.io.File类 1.凡是与输入.输出相关的类.接口等都定义在java.io包下 2.File是一个类.能够有构造器创建其对象.此对象相应着一个文件(.txt .avi .doc .ppt ...
- Java中Scanner类
java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序
- java.io.File类操作
一.java.io.File类 String path="E:/222/aaa";//路径 String path1="aaa.txt"; File file= ...
- 33.JAVA编程思想——JAVA IO File类
33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的 ...
- java交互Scanner类
用next方法接收 import java.util.Scanner; public class Demo01 { public static void main(String[] args) { / ...
- java中scanner类的用法
在Eclipse中编写程序时,如果我们的变量是需要手动输入的时候,我们就可以用到scanner类了. Scanner类,这是一个用于扫描输入文本的新的实用程序.由于任何数据都必须通过同一模式的捕获组检 ...
- [Java IO]01_File类和RandomAccessFile类
File类 File类是java.io包中唯一对文件本身进行操作的类.它可以进行创建.删除文件等操作. File类常用操作 (1)创建文件 可以使用 createNewFille() 创建一个新文 ...
- Java用Scanner类获取用户输入
用Java编写程序时,有些数据需要用户输入,这个时候需要调用java提供的Scanner类,这个类在包java.util下,比如求一个矩形的面积,简单的看一下用法: import java.util. ...
随机推荐
- MATLAB作图方法与技巧(二)
作为MATLAB作图方法与技巧(一)的补充 1.绘制二维散点图 ① scatter函数 scatter(x,y,s,c)函数绘制向量x和y的散点图,其中s代表点的大小,c代表点的形状,s和c缺省时为默 ...
- 跳转的两种实现方法setInterval和setTimeout
setInterval方法: <html> <head> <meta http-equiv="Content-Type" content=" ...
- (八)MySQL索引操作
(1)准备环境 mysql> create table t1(id int,name varchar(50)); mysql> \d $$ mysql> create procedu ...
- office中密码的移除方法
密码有两种,一种是修改密码,一种是访问密码,通常两种密码的创建位置不同.对于访问密码,只需要在文件→信息 中将密码删除 对于修改密码,则要输入密码以后另存,然后在保存窗口里边点工具,下拉菜单里选常规选 ...
- notepad++ 删除重复记录
sort line with Edit -> Line Operations -> Sort Lines Lexicographically ascending do a Find / R ...
- luogu P1095 守望者的逃离
题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会 ...
- 【分块】bzoj2957 楼房重建
http://www.cnblogs.com/wmrv587/p/3843681.html ORZ 分块大爷.思路很神奇也很清晰. 把 块内最值 和 块内有序 两种良好的性质结合起来,非常棒地解决了这 ...
- Linux下提示命令找不到:bash:command not found
Linux下输入某些命令时会提示:bash:command not found. 首先,查看$PATH中是否包含了这些命令. $PATH:决定了shell到哪些目录中去寻找命令或程序,PATH值是一系 ...
- java前后端加密(转载)
最近做一个项目的安全渗透测评,测评人员发来一份测试报告,报告明确提出不允许明文参数传输,因为数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的 ...
- AngularJS的加载执行过程
1. HTML页面的加载,这会触发加载页面包含的所有JS (包括 AngularJS) 2. AngularJS启动,搜寻所有的指令(directive) 3. 找到ng-app,搜寻其指定的模块(M ...