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
时间: 2025-01-04 15:22:16

JAVA IO:Scanner类的相关文章

利用java.io.File类实现遍历本地磁盘上指定盘符或文件夹的所有的文件

2016-11-18 这是本人的第一篇随笔博客,纠结了半天还是选择自己学的时候比较用心的一些知识点上.利用java.io.File类指定本地的文件夹进行遍历所有的文件. package org.lxm.filedemo; import java.io.File; import java.util.Scanner; /* * 本程序是将某个盘的所有文件夹及其文件全部调出来的操作 */ public class FileAllDemo { public static void main(String

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

33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的长度并不一定同样:仅仅要知道它们有多大以及置于文件何处就可以. 首先.我们有点难以相信RandomAccessFile 不属于InputStream 或者OutputStream 分层结构的一部分.除了恰巧实现了DataInput 以及DataOutput(这两者亦由 DataInputStream

java中scanner类的用法

在Eclipse中编写程序时,如果我们的变量是需要手动输入的时候,我们就可以用到scanner类了. Scanner类,这是一个用于扫描输入文本的新的实用程序.由于任何数据都必须通过同一模式的捕获组检索或通过使用一个索引来检索文本的各个部分.于是可以结合使用正则表达式和从输入流中检索特定类型数据项的方法.这样,除了能使用正则表达式之外,Scanner类还可以任意地对字符串和基本类型(如int和double)的数据进行分析.借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器.

java io --- Reader类

在前几篇文章中一直讲的都是InputStream,这是操作字节流的类,然而我们在程序中往往要从文件等stream中读取字符信息,如果只用InputStream能否读取字符信息呢?当然可以.但是这涉及到了一个编码和解码的问题,传输双方必须才用同一种编码方式才能正确接收,这就导致每次在传输时,传输方需要做这么几件事: 1)将需要传输的字符编码成指定字节 2)传输字节 接收方需要做这么几件事: 1)接收字节 2)将字节解码成对应的字符 我们看一下下面的例子: 我在对应目录有一个文件,这个文件是按照ut

java之Scanner类

1.Scanner类概述 Scanner类概述:JDK5以后用于获取用户的额键盘输入 构造方法:public Scanner(InputStream source) 2.Scanner类的成员方法 基本格式: hasNextXxx()判断是否还有下一个输入项,其实Xxx可以是Int,Double等.如果需要判断是否包含下一个字符串,则可以省略Xxx. nextXxx()获取下一个输入项.Xxx的含义和上一个方法中的Xxx相同. 默认情况下,Scanner使用空格,回车等作为分隔符 常用方法: p

[Java IO]01_File类和RandomAccessFile类

File类 File类是java.io包中唯一对文件本身进行操作的类.它可以进行创建.删除文件等操作. File类常用操作 (1)创建文件 可以使用 createNewFille() 创建一个新文件. 注意: Windows 中使用反斜杠表示目录的分隔符"\". Linux 中使用正斜杠表示目录的分隔符"/". 最好的做法是使用 File.separator 静态常量,可以根据所在操作系统选取对应的分隔符. (2)删除文件 可以使用 delete() 删除一个文件.

java IO,bufferedReader类

1,掌握bufferedreader类作用 2,掌握键盘输入的基本格式. Buffer:表示缓冲区,之前的StringBuffer,缓冲区中的内容可以更改,可以提高效率. 如果要想接收任意长度的数据,而且避免乱码的产生,就可以使用bufferedreader. public class BufferedReaderextends Reader 因为输入的数据可能出现中文,所以此处使用字符流完成. System.in本身表示的是InputStream(字节流),现在要求接收的是字符流,需要将字节流

Java用Scanner类获取用户输入

用Java编写程序时,有些数据需要用户输入,这个时候需要调用java提供的Scanner类,这个类在包java.util下,比如求一个矩形的面积,简单的看一下用法: 1 import java.util.Scanner; 2 public class Javashuru { 3 //Java获取用户输入,使用Scanner类,位于java.util包中 4 public static void main(String[] args){ 5 //创建Scanner对象 6 Scanner inpu

关于java的scanner类

java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 首先使用Scanner类时候需要导包: scanner类的基本语法: Scanner类有很多种方法 .next(); .nextLine();  .nextInt(); .nextFloat(); etc... 不同的方法接受的变量类型也不同: .next() 和 .nextLine() 需要使用String类型变量接收: .nextInt() 需要int类型变量接收: .nextF

Java中Scanner类的使用

一个可以解析基本类型和字符串的简单文本扫描器. 例如,以下代码使用户能够从 System.in 中读取一个数: public class ApiScanner { public static void main(String[] args) { //创建对象接收键盘录入的数据 Scanner sc = new Scanner(System.in);//创建一个scanner类的对象 //录入数据 System.out.print("请输入你的名字:"); String input =