hi,我是程序员王也,一个资深Java开发工程师,平时十分热衷于技术副业变现和各种搞钱项目的程序员~,如果你也是,可以一起交流交流。
今天我们来简单聊聊Java中的Scanner类。
Scanner
是Java中用于解析文本并获取不同类型的输入(如整数、浮点数、字符串等)的一个实用工具。Scanner
类位于java.util
包中,它提供了多种方法来读取控制台输入。
以下是Scanner
类的详细用法:
创建Scanner
对象
要使用Scanner
,首先需要创建一个Scanner
对象,它会包装一个输入流,通常是System.in
(标准输入流)。
Scanner scanner = new Scanner(System.in);
读取不同类型的输入
读取字符串:
String inputString = scanner.nextLine();
读取整数:
int inputInt = scanner.nextInt();
读取浮点数:
double inputDouble = scanner.nextDouble();
读取布尔值:
boolean inputBoolean = scanner.nextBoolean();
读取多个类型的输入(需要按照顺序调用相应的读取方法):
String name = scanner.next();
int age = scanner.nextInt();
scanner.nextLine(); // 读取换行符,因为nextInt()之后会留下一个换行符在输入流中
使用分隔符
默认情况下,Scanner
使用空格作为分隔符。如果你想使用其他字符作为分隔符,可以使用useDelimiter
方法。
scanner.useDelimiter(","); // 现在使用逗号作为分隔符
查找和匹配输入
查找特定字符串:
if (scanner.findWithinHorizon("example", 0)) {
System.out.println("Found 'example'");
}
匹配特定模式:
if (scanner.hasNext("example\\d+")) {
String matched = scanner.next();
System.out.println("Found matched string: " + matched);
}
处理异常
在使用Scanner
时,可能会遇到InputMismatchException
或NoSuchElementException
异常。为了处理这些异常,可以使用try-catch
块。
try {
int inputInt = scanner.nextInt();
} catch (InputMismatchException e) {
System.out.println("Please enter a valid integer.");
}
关闭Scanner
当不再需要Scanner
对象时,应该关闭它以释放资源。Scanner
实现了AutoCloseable
接口,因此可以使用try-with-resources
语句自动关闭。
try (Scanner scanner = new Scanner(System.in)) {
// 使用scanner
} // scanner在这里自动关闭
其他有用的方法
hasNext()
:检查输入流中是否有下一个元素。hasNextLine()
:检查输入流中是否有下一行。skip()
:跳过分隔符。reset()
:重置Scanner
,忽略之前的所有输入。Scanner
类是处理用户输入的强大工具,它的灵活性和易用性使得它成为读取和解析控制台输入的首选方式。在使用Scanner
时,要注意异常处理和资源管理,以确保程序的健壮性和效率。