Java Scanner如何处理异常输入?
时间: 2024-10-16 12:11:08 浏览: 40
输入\输出-异常处理与输入输出(java)
在Java中,`Scanner`类用于从各种输入源(如控制台、文件等)读取数据。当试图读取非预期的数据时,`Scanner`可能会抛出异常。主要有两种常见的异常:
1. `InputMismatchException`: 当读取的数据无法转换成期望的数据类型时(例如,期望一个整数却得到一个字符串),`Scanner.next()` 或 `nextInt()` 等方法会抛出这个异常。
2. `NoSuchElementException`: 如果尝试从空迭代器或已关闭的输入流中读取数据,`Scanner.nextLine()` 或 `nextDouble()` 等方法会引发这种异常。
为了处理这些异常,你可以使用`try-catch`块来捕获并处理它们。例如:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
int input = scanner.nextInt();
System.out.println("你输入的是: " + input);
} catch (InputMismatchException e) {
System.out.println("输入错误,请输入一个整数!");
scanner.next(); // 清除无效输入
} catch (NoSuchElementException e) {
System.out.println("输入结束或输入流有问题.");
} finally {
if (scanner != null) {
scanner.close();
}
}
}
}
```
在这个例子中,如果用户输入了一个不是数字的字符,程序会捕获`InputMismatchException`,提示用户并清除无效输入。如果遇到其他异常情况,比如到达了输入流的末尾,会捕获`NoSuchElementException`。
阅读全文