Scanner类
java.util.Scanner是Java5的新特征,我们可以通过 Scanner 类来获取用户的输入。
Scanner一般用于获取控制台输入。
下面是创建 Scanner 对象的基本语法:
Scanner sc = new Scanner(System.in);
通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:
使用 next 方法:
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 从键盘接收数据
// next方式接收字符串
System.out.println("next方式接收:");
// 判断是否还有输入
if(scanner.hasNext()){
String str1 = scanner.next();
System.out.println("输入的数据为:"+str1);
}
}
}
输出结果为:
可以看到“fds”字符串没有输出,下面则是nextLine。
使用nextLine方法:
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 从键盘接收数据
// nextLine方式接收字符串
System.out.println("nextLine方式接收:");
// 判断是否还有输入
if(scanner.hasNextLine()){
String str1 = scanner.nextLine();
System.out.println("输入的数据为:"+str1);
}
}
}
输出结果为:
可以看到字符串“fds”可以输出
next()与nextLine()区别
next():
- 一定要读取到有效字符后才可以结束输入。0
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next()不能得到带有空格的字符串。
nextLine():
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
- 可以获得空白。
当数据为int类型或者float类型时,请在输入前最好先使用hasNext***()方法进行验证,再使用next***来读取这个数据。
请输入以下代码:
import java.util.Scanner;
public class ScannerDemo2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//从键盘接收数据
int i = 0;
float f = 0.0f;
System.out.println("请输入int类型:");
if (scanner.hasNextInt()) {
// 判断输入的是否是int类型
i = scanner.nextInt();
// 接收int类型数据
System.out.println("该数据为int类型数据: " + i);
}else {
// 输入错误的信息
System.out.println("输入的不是int类型!");
}
System.out.println("请输入float类型:");
if (scanner.hasNextFloat()) {
// 判断输入的是否是float类型
f = scanner.nextFloat();
// 接收float类型数据
System.out.println("该数据为float类型数据:" + f);
}else {
//输入错误的信息
System.out.println("输入的不是float类型!");
}
}
}
以上代码输出结果为:
输入多个数字,并求其总和与平均数:
import java.util.Scanner;
public class ScannerDemo3 {
public static void main(String[] args) {
System.out.println("请输入数值,空格隔开,非数字结束:");
Scanner scanner = new Scanner(System.in);
double sum = 0;
int i = 0;
while (scanner.hasNextDouble()) {
double d = scanner.nextDouble();
i = i + 1;
sum = sum + d;
}
System.out.println(i + "个数和为" + sum);
System.out.println(i + "个数平均值为" + (sum/i));
}
}
以下为输出结果: