Scanner类的基本概述

首先,让我们来了解一下Scanner类的基本概述。Scanner类位于java.util包中,通过创建Scanner对象,我们可以从不同的数据源读取输入,并将其解析为Java的基本数据类型或字符串。

Scanner的创建与导入

在开始之前,我们需要先导入Scanner类所在的包,使用以下语句:

1
import java.util.Scanner;

然后,我们可以通过以下代码创建Scanner对象:

1
Scanner scanner = new Scanner(System.in);

这里的System.in表示我们将从控制台获取输入。

基本的输入操作

接下来,我们就可以开始进行一些基本的输入操作了。

1. 读取字符串

我们可以使用next()方法来读取控制台输入的字符串。下面是一个简单的示例:

1
2
3
4
Scanner scanner = new Scanner(System.in);
System.out.print("请输入您的姓名:");
String name = scanner.next();
System.out.println("您好," + name + "!");

运行以上代码,程序将会要求用户输入姓名,然后打印出”您好,XXX!”的欢迎消息。

2. 读取整数

如果我们需要读取整数,可以使用nextInt()方法。下面是一个示例:

1
2
3
4
Scanner scanner = new Scanner(System.in);
System.out.print("请输入您的年龄:");
int age = scanner.nextInt();
System.out.println("您的年龄是:" + age + "岁");

通过nextInt()方法,程序将会读取用户输入的整数,并打印出用户的年龄。

Scanner类的高级应用

除了基本的输入操作外,Scanner类还有一些高级的应用,可以更灵活地处理用户的输入。

1. 使用正则表达式验证输入格式

Scanner类提供了hasNext(String pattern)方法,可以用来判断输入是否符合指定的正则表达式。下面是一个示例:

1
2
3
4
5
6
7
8
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
while (!scanner.hasNextInt()) {
System.out.print("输入有误,请重新输入:");
scanner.next();
}
int number = scanner.nextInt();
System.out.println("您输入的数字是:" + number);

当用户输入非整数时,程序会提示用户重新输入,直到用户输入了一个合法的整数。

2. 处理多个输入值

有时候,我们可能需要同时读取多个输入值。Scanner类提供了诸如nextDouble()nextBoolean()等方法,可以方便地读取不同类型的输入值。例如:

1
2
3
4
5
6
7
Scanner scanner = new Scanner(System.in);
System.out.print("请输入您的体重(kg):");
double weight = scanner.nextDouble();
System.out.print("请输入您的身高(m):");
double height = scanner.nextDouble();
double bmi = weight / (height * height);
System.out.println("您的BMI指数为:" + bmi);

在上述代码中,我们通过nextDouble()方法分别读取用户的体重和身高,并计算出对应的BMI指数。

3. 从文件中读取数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ScannerTest {
public static void main(String[] args) {
try {
File file = new File("D:\\blog\\JavaTest\\Test\\src\\data.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}

在上述代码中,我们首先创建了一个File对象,指定要读取数据的文件名为data.txt。然后,我们通过Scanner对象读取文件中的每一行数据,并将其输出到控制台上。