Java中的Scanner
类是一个非常有用的类,它位于java.util
包中,主要用于解析文本并获取不同类型的输入,例如整数、浮点数、字符串等。Scanner
类提供了多种方法来读取不同类型的输入,并且可以从不同的输入源读取数据,如键盘输入、文件、字符串等。
以下是Scanner
类的一些关键特性和常用方法:
导入Scanner类
在使用Scanner
类之前,需要先导入它:
import java.util.Scanner;
创建Scanner对象
创建一个Scanner
对象以开始读取输入。通常,我们从System.in
创建一个Scanner
实例来读取用户的键盘输入:
Scanner scanner = new Scanner(System.in);
读取不同类型的输入
-
读取字符串:
String inputString = scanner.nextLine();
-
读取整数:
int inputInt = scanner.nextInt();
-
读取浮点数:
double inputDouble = scanner.nextDouble();
-
读取布尔值:
boolean inputBoolean = scanner.nextBoolean();
-
读取多个由分隔符分隔的值:
String inputString = scanner.next(); // 读取下一个标记(默认空格分隔) scanner.useDelimiter(","); // 设置分隔符为逗号
处理特殊情况
- 带符号的数值:使用
hasNext()
和next()
方法组合来读取带符号的数值。if (scanner.hasNext()) { String token = scanner.next(); if (token.equals("-")) { scanner.next(); // 跳过负号 value = -scanner.nextInt(); } else { value = scanner.nextInt(); } }
使用Scanner读取文件
Scanner
也可以用于读取文件内容:
File file = new File("example.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
// 处理每一行
}
scanner.close();
关闭Scanner
当完成输入读取后,应该关闭Scanner
对象以释放资源。对于System.in
,通常不需要关闭,因为它是标准输入流。但是,如果Scanner
用于读取文件或其他资源,应该调用close()
方法:
scanner.close();
其他有用的方法
hasNext()
: 检查输入源中是否还有下一个元素。nextLine()
: 读取文本行并返回一个字符串,不包括任何行终止符。next()
: 读取输入中的下一个标记(默认由空白字符分隔的字符串)。useDelimiter(String)
: 设置分隔符,用于next()
方法。
Scanner
类是处理输入的强大工具,它的灵活性和易用性使得它在Java程序中非常受欢迎。