使用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类的更多相关文章

  1. Java中Scanner类和BufferReader类之间的区别

    java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串.它本质上是使用正则表达式去读取不同的数据类型. Java.io.BufferedReader类为了能够高效的 ...

  2. 转:Java中Scanner类和BufferReader类之间的区别

    原文地址:https://blog.csdn.net/u014717036/article/details/52227782 java.util.Scanner类是一个简单的文本扫描类,它可以解析基本 ...

  3. java.io.File类

    java.io.File类 1.凡是与输入.输出相关的类.接口等都定义在java.io包下 2.File是一个类.能够有构造器创建其对象.此对象相应着一个文件(.txt .avi .doc .ppt ...

  4. Java中Scanner类

    java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序

  5. java.io.File类操作

    一.java.io.File类 String path="E:/222/aaa";//路径 String path1="aaa.txt"; File file= ...

  6. 33.JAVA编程思想——JAVA IO File类

    33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的 ...

  7. java交互Scanner类

    用next方法接收 import java.util.Scanner; public class Demo01 { public static void main(String[] args) { / ...

  8. java中scanner类的用法

    在Eclipse中编写程序时,如果我们的变量是需要手动输入的时候,我们就可以用到scanner类了. Scanner类,这是一个用于扫描输入文本的新的实用程序.由于任何数据都必须通过同一模式的捕获组检 ...

  9. [Java IO]01_File类和RandomAccessFile类

    File类 File类是java.io包中唯一对文件本身进行操作的类.它可以进行创建.删除文件等操作.   File类常用操作 (1)创建文件 可以使用 createNewFille() 创建一个新文 ...

  10. Java用Scanner类获取用户输入

    用Java编写程序时,有些数据需要用户输入,这个时候需要调用java提供的Scanner类,这个类在包java.util下,比如求一个矩形的面积,简单的看一下用法: import java.util. ...

随机推荐

  1. MATLAB作图方法与技巧(二)

    作为MATLAB作图方法与技巧(一)的补充 1.绘制二维散点图 ① scatter函数 scatter(x,y,s,c)函数绘制向量x和y的散点图,其中s代表点的大小,c代表点的形状,s和c缺省时为默 ...

  2. 跳转的两种实现方法setInterval和setTimeout

    setInterval方法: <html> <head> <meta http-equiv="Content-Type" content=" ...

  3. (八)MySQL索引操作

    (1)准备环境 mysql> create table t1(id int,name varchar(50)); mysql> \d $$ mysql> create procedu ...

  4. office中密码的移除方法

    密码有两种,一种是修改密码,一种是访问密码,通常两种密码的创建位置不同.对于访问密码,只需要在文件→信息 中将密码删除 对于修改密码,则要输入密码以后另存,然后在保存窗口里边点工具,下拉菜单里选常规选 ...

  5. notepad++ 删除重复记录

    sort line with Edit -> Line Operations -> Sort Lines Lexicographically ascending do a Find / R ...

  6. luogu P1095 守望者的逃离

    题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会 ...

  7. 【分块】bzoj2957 楼房重建

    http://www.cnblogs.com/wmrv587/p/3843681.html ORZ 分块大爷.思路很神奇也很清晰. 把 块内最值 和 块内有序 两种良好的性质结合起来,非常棒地解决了这 ...

  8. Linux下提示命令找不到:bash:command not found

    Linux下输入某些命令时会提示:bash:command not found. 首先,查看$PATH中是否包含了这些命令. $PATH:决定了shell到哪些目录中去寻找命令或程序,PATH值是一系 ...

  9. java前后端加密(转载)

    最近做一个项目的安全渗透测评,测评人员发来一份测试报告,报告明确提出不允许明文参数传输,因为数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的 ...

  10. AngularJS的加载执行过程

    1. HTML页面的加载,这会触发加载页面包含的所有JS (包括 AngularJS) 2. AngularJS启动,搜寻所有的指令(directive) 3. 找到ng-app,搜寻其指定的模块(M ...