分类: Java
【JAVA IO】_Scanner笔记
本章目标:
掌握Scanner类的作用
使用Scanner接收输入数据
Scanner简介:
此类不在java.io包中,而在java.util包中,此类是一个工具类
使用Scanner接收键盘的输入数据:
比直接使用BufferedReader更加方便。但是,以上的输入数据代码实际上是存在问题的。
如果输入数据之间存在了空格,则会以空格为分隔符。如果要想输入空格的话,则就必须修改分隔符,将分隔符变成“\n”
public Scanner useDelimiter(String pattern)
修改分隔符:
之前的输入数据都是以字符串的形式返回的,实际上使用Scanner类也可以方便的直接返回整数或者小数。
有以下的方法:
接收整数:
|-判断是否是整数:public boolean hasNextInt(),判断是否是整数,如果是则返回true
|-接收数据:public int nextInt()
接收小数:
|-判断是否是小数:public boolean hasNextFloat()
|-接收数据:public float nextFloat()
Scanner这个类虽然可以接收各种类型,但是对于日期型的数据却无法接收。
如果要想接收Date类型的数据,则只能通过字符串转型,但是然接收的时候依然可以使用Scanner类中提供的方法进行验证:
验证:public String hasNext(String pattern)
接收:public String next(String pattern)
还可以直接从文件中读取信息。
假设:d:\test.txt文件
使用Scanner直接读取文件内容
现在的文件内容确实读取进来,但是此程序依然不完美。以上只能读取出第一行数据,因为存在换行,所以认为读完了。
在使用Scanner读文件的时候,要考虑到换行的功能。
本章目标:
掌握Scanner类的作用
使用Scanner接收输入数据
Scanner简介:

此类不在java.io包中,而在java.util包中,此类是一个工具类
使用Scanner接收键盘的输入数据:
- import java.util.*;
- public class ScannerDemo01{
- public static void main(String args[]){
- Scanner scan = new Scanner(System.in); //从键盘接收数据
- System.out.println("输入数据:");
- String str = scan.next(); //接收数据
- System.out.println("输入的数据为:"+str);
- }
- }
比直接使用BufferedReader更加方便。但是,以上的输入数据代码实际上是存在问题的。
如果输入数据之间存在了空格,则会以空格为分隔符。如果要想输入空格的话,则就必须修改分隔符,将分隔符变成“\n”
public Scanner useDelimiter(String pattern)
修改分隔符:
- import java.util.* ;
- public class ScannerDemo02{
- 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) ;
- }
- };
之前的输入数据都是以字符串的形式返回的,实际上使用Scanner类也可以方便的直接返回整数或者小数。
有以下的方法:
接收整数:
|-判断是否是整数:public boolean hasNextInt(),判断是否是整数,如果是则返回true
|-接收数据:public int nextInt()
接收小数:
|-判断是否是小数:public boolean hasNextFloat()
|-接收数据:public float nextFloat()
- import java.util.* ;
- public class ScannerDemo03{
- 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("输入的不是小数!") ;
- }
- }
- };
Scanner这个类虽然可以接收各种类型,但是对于日期型的数据却无法接收。
如果要想接收Date类型的数据,则只能通过字符串转型,但是然接收的时候依然可以使用Scanner类中提供的方法进行验证:
验证:public String hasNext(String pattern)
接收:public String next(String pattern)
- import java.util.* ;
- import java.text.* ;
- public class ScannerDemo04{
- 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) ;
- }
- };
还可以直接从文件中读取信息。
假设:d:\test.txt文件
使用Scanner直接读取文件内容
- import java.util.* ;
- import java.text.* ;
- import java.io.* ;
- public class ScannerDemo05{
- 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){}
- String str = null ;
- while(scan.hasNext()){
- str = scan.next(); // 取数据
- }
- System.out.println("文件内容为:" + str) ;
- }
- };
现在的文件内容确实读取进来,但是此程序依然不完美。以上只能读取出第一行数据,因为存在换行,所以认为读完了。
- import java.util.* ;
- import java.text.* ;
- import java.io.* ;
- public class ScannerDemo05{
- 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) ;
- }
- };
在使用Scanner读文件的时候,要考虑到换行的功能。