有时我们会看到一些程序代码能够获取你键盘输入的数据,那么到底是通过什么获取用户输入的呢?接下来就会讲到。
一、Scanner类的定义:
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
二、Scanner类的作用:
通过使用Scanner类我们可以获取用户的输入。
三、Scanner类的创建方式:
//构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。
Scanner s = new Scanner(System.in);
//构造一个新的 Scanner,它生成的值是从指定文件扫描的。
Scanner s = new Scanner(File source);
四、Scanner类的next()与nextLine()方法的使用
1.next()方法的作用:
查找并返回来自此扫描器的下一个完整标记。
nextLine()方法的作用:
此扫描器执行当前行,并返回跳过的输入信息。
2.next()与nextLine()区别:
next():
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next()不能得到带有空格的字符串。
nextLine():
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
- 可以获得空白。
下面是一个简单的数据输入实例,通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般使用hasNext与hasNextLine判断是否还有输入的数据:
next()方法接收数据:
package ScannerTest;
import java.util.Scanner;
class Demo {
public static void main(String []args){
//从键盘接收数据
Scanner scan =new Scanner(System.in);
//判断是否还有输入
if (scan.hasNext()) {
//使用next()方法接收字符串
String str = scan.next();
System.out.println("输入的数据为:"+str);
}
}
}
输出结果:
nextLine()接收数据:
package ScannerTest;
import java.util.Scanner;
class DemoLine {
public static void main(String []args){
//从键盘接收数据
Scanner scan =new Scanner(System.in);
if(scan.hasNextLine()){
//使用nextLine()方式接收字符串
String str1 = scan.nextLine();
System.out.println("输入的数据:"+str1);
}
}
}
输出结果:
下面还有一个实例用来检验输入数据是否为小数,整数;
package ScannerTest;
import java.util.Scanner;
class ScannerNumberTest {
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("输入的数据不是小数");
}
}
}
输出结果:
下面是一个实例,我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:
import java.util.Scanner;
class AverageDemo {
public static void main(String []args){
Scanner scan =new Scanner(System.in);
double sum =0.0d;
int num=0;
while(scan.hasNextDouble()){
double d =scan.nextDouble();
num=num+1;
sum=sum+d;
}
System.out.println(num+"个数的和为"+sum);
System.out.println(num+"个数的平均数为"+(sum/num));
}
}
输出结果: