Scanner类——扫描器接受输入数据
Scanner工具类
Java提供Scanner工具类实现获取用户输入。基本语法如下:
Scanner s = new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
使用next()时候,若有空格则终止了接收数据:
package com.xu.scanner;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
//创建一个扫描器对象用于接受键盘输入数据
//快速创建对象:在new xx;后alt+enter
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
//判断用户有无输入字符串
if (scanner.hasNext()) {
//next方式接收用户输入
String str = scanner.next();
System.out.println("输出内容为:" + str);
}
//用完scanner等io流类要关闭,不关掉回一直占用资源
scanner.close();
}
}
结果为:

使用nextLine()时候,若接收到回车则终止了接收数据:
package com.xu.scanner;
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextline方式接收:");
if (scanner.hasNextLine()) {
String str = scanner.nextLine();
System.out.println("输出内容为:" + str);
}
scanner.close();
}
}
结果为:


输入整数和浮点数
整数:
package com.xu.scanner;
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = 0;
System.out.println("请输入整数:");
if (scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("输入的整数是:"+i);
}else {
System.out.println("你输入的不是整数数据");
}
scanner.close();
}
}
浮点数:
package com.xu.scanner;
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
float f = 0.0f;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入浮点数:");
if (scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("输入的浮点数是:"+f);
}else {
System.out.println("你输入的不是浮点数数据");
}
scanner.close();
}
}
计算输入的数字的平均值
package com.xu.scanner;
import java.util.Scanner;
public class Demo5 {
public static void main(String[] args) {
//计算输入的数据的平均值,当输入非double时结束。
Scanner scanner = new Scanner(System.in);
double sum = 0;//计算和
int n = 0;//统计输入的数字;
System.out.println("请输入数字:");
while (scanner.hasNextDouble()) {
sum += scanner.nextDouble();
n++;
}
System.out.println("输入的数字和为:" + sum + "\n个数为:" + n + "\n平均值为:" + sum / n);
scanner.close();
}
}
演示结果:

浙公网安备 33010602011771号