本节目标:
1.掌握Scanner类的作用
2.使用Scanner接收输入的数据
Scanner
作为专门的数据输入类,此类可以完成BufferedReader类的功能,也可以对输入的数据进行验证,此类存放在java.util包中。
使用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对日期类型数据无法接收,只能通过字符串转型。
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.注意分隔符的影响。