目录
- 前言
- 一、Scanner类
- 二、Scanner类基本使用
- 1. 基本使用
- 2. nextLine()方法
前言
我们在初学 Java 编程的时候,总是感觉很枯燥乏味,想着做点可以交互的小系统,可以让用户自由输入,系统可以接收做出反映。这就要介绍一下 Java 中的 Scanner 类了。
一、Scanner类
Java 中的 Scanner 类是一个用于读取用户输入的工具类。它可以从控制台、文件、字符串等多种来源读取数据,并将其转换为不同的数据类型,如整数、浮点数、布尔值等。
Scanner 类是在 Java 5 版本中首次引入,在 java.util 包下,是 Java 的工具类,是一个最终类,实现了 Iterator, Closeable 两个接口。
public final class Scanner implements Iterator<String>, Closeable {}
我们从 Scanner 类中可以看到其提供了多个构造器,不同的构造器可以接收不同的数据源:输入流、文件、字符串等,然后进行数据解析。
// 读取可读资源,并指定模式分隔
private Scanner(Readable source, Pattern pattern) {}
// 读取可读资源
public Scanner(Readable source) {}
// 读取输入流
public Scanner(InputStream source) {}
// 读取输入流,并指定字符编码类型
public Scanner(InputStream source, String charsetName) {}
// 读取文件
public Scanner(File source) throws FileNotFoundException {}
// 读取文件,并指定字符编码类型
public Scanner(File source, String charsetName) throws FileNotFoundException {}
// 读取路径文件
public Scanner(Path source) throws IOException {}
// 读取字符串
public Scanner(String source) {}
......
Scanner 类提供了许多有用的方法,如next()、nextInt()、nextLine() 等,使得读取和解析输入变得非常方便。同时,Scanner 类还支持定界符(delimiter)的设置,可以根据指定的分隔符对输入进行分割,进一步简化输入处理的过程。
二、Scanner类基本使用
1. 基本使用
使用 Scanner 类,首先需要创建一个 Scanner 对象,并将其与一个输入流(如 System.in)相关联,然后使用 Scanner 对象的 next() 或 nextLine() 方法读取用户输入的文本。当然读取其他数据类型也是没有问题的,就需要使用对应类型的方法,如 nextInt()、nextShort()、nextLong() 等等。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// 创建Scanner对象
Scanner scanner = new Scanner(System.in);
// 提示用户输入一个字符串
System.out.print("请输入一个字符串: ");
// 读取用户控制台输入的字符串
String input = scanner.nextLine();
// 控制台打印用户输入的字符串
System.out.println("你输入的字符串是: " + input);
}
}
当用户输入文本后,按下回车键后,输入的文本将作为字符串被读取并保存在 input 变量中。此时程序会将读取的字符串打印出来。
2. nextLine()方法
Scanner 类中的 nextLine() 方法用于获取输入的下一行文本。它会扫描输入流中当前位置到行尾(包括换行符 “\n”),并返回该行文本作为一个字符串,不包括行尾符号。如果当前位置已经是行尾,它将返回一个空字符串。可以通过重复调用该方法来连续读取多行文本。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入多行文本,以空行结束:");
StringBuilder stringBuilder = new StringBuilder();
// 判断是否有下一行
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
// 遇到空行退出循环
if (line.isEmpty()) {
break;
}
stringBuilder.append(line);
// 拼接行尾符号,保留换行格式
stringBuilder.append('\n');
}
String input = stringBuilder.toString();
System.out.println("输入的多行文本为:");
System.out.println(input);
}
}