JAVA IO:Scanner类

Posted 美好的明天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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类:正确用法

Java - IO 扫描流:Scanner

Java 输入输出

java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段

使用 Java 中的 Scanner 类读取 .txt 文件

java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段