javaIO——Scanner

本节目标:

    1.掌握Scanner类的作用

    2.使用Scanner接收输入的数据

Scanner

作为专门的数据输入类,此类可以完成BufferedReader类的功能,也可以对输入的数据进行验证,此类存放在java.util包中。

javaIO——Scanner

 使用Scanner类接收数据:

1.基本数据输入

public class ScannerDemo {
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 class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入数据:");
scan.useDelimiter("\n");
String str = scan.next();//接收数据
System.out.println("输入的数据为:" + str);
}

}

以上程序都是以字符串返回,Scanner也可以方便的返回整数或小数。

接收整数:

    |-判断是否为整数:public boolean hasNextInt(),判断是否为整数,如果是,则返回true

    |-接收数据:public int nestInt()

接收小数:

    |-判断是否为小数:public boolean hasNextFloat(),判断是否为小数,如果是,则返回true

    |-接收数据:public int nestFloat()

public class ScannerDemo2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = 0;
float f = 0.0f;
System.out.println("请输入整数:");
if (scan.hasNextInt()) {
i = scan.nextInt();
System.out.println("输入的整数为:" + i);
}else{
System.out.println("输入的不是整数!");
}
System.out.println("请输入小数:");
if (scan.hasNextFloat()) {
f = scan.nextFloat();
System.out.println("输入的小数为:" + f);
}else{
System.out.println("输入的不是小数!");
}
}
}

2.日期格式输入

Scanner对日期类型数据无法接收,只能通过字符串转型。

    |-验证:hasNext(String pattern) 

    |-接收:next(Pattern pattern) 

public class ScannerDemo3 {
public static void main(String[] args) throws ParseException {
Scanner scan = new Scanner(System.in);
String str;
Date date;
System.out.println("请输入日期(yyyy-MM-dd)");
if (scan.hasNext("^\\d{4}-\\d{2}-\\d{2}$")) {
str = scan.next("^\\d{4}-\\d{2}-\\d{2}$");
date = new SimpleDateFormat("yyyy-MM-dd").parse(str);
System.out.println(date);
}else{
System.out.println("输入的日期格式错误!");
}
}

}

3.文件中数据输入

public class ScannerDemo4 {
public static void main(String[] args) throws FileNotFoundException {
File f = new File("f:" + File.separator + "test2.txt");
Scanner scan = new Scanner(f);
String str = null;
if (scan.hasNext()) {
str = scan.next();
}
System.out.println("文件内容为:" + str);
}

}

以上程序只能读取文件中的第一行数据,如果存在换行,

public class ScannerDemo4 {
public static void main(String[] args) throws FileNotFoundException {
File f = new File("f:" + File.separator + "test2.txt");
Scanner scan = new Scanner(f);
StringBuffer str = new StringBuffer();
while (scan.hasNext()) {
str.append(scan.next()).append("\n");
}
System.out.println("文件内容为:" + str);
}

}

总结:

1.Scanner类方便读取数据

2.注意分隔符的影响。