Java的Scanner類在處理非法字符時,通常會遇到以下幾種情況:
輸入流結束(EOF):當輸入流到達末尾時,Scanner會拋出NoSuchElementException。這意味著你已經到達了輸入的結尾,無法再讀取更多的字符。
非整數輸入:當你嘗試使用nextInt()、nextLong()等方法讀取整數時,如果輸入了非整數字符,Scanner會拋出InputMismatchException。
非數字字符:當你嘗試使用nextDouble()、nextFloat()等方法讀取浮點數時,如果輸入了非數字字符,Scanner會拋出InputMismatchException。
空白字符:當你嘗試讀取下一個token時,如果輸入了空白字符(如空格、制表符或換行符),Scanner會自動忽略它們。
要處理這些異常,你可以使用try-catch語句捕獲異常并采取相應的措施。例如:
import java.util.InputMismatchException;
import java.util.NoSuchElementException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.println("請輸入一個整數:");
int num = scanner.nextInt();
System.out.println("你輸入的整數是:" + num);
} catch (InputMismatchException e) {
System.out.println("輸入錯誤,請輸入一個整數!");
} catch (NoSuchElementException e) {
System.out.println("輸入流結束。");
} finally {
scanner.close();
}
}
}
在這個例子中,我們使用try-catch語句捕獲了可能的InputMismatchException和NoSuchElementException異常。如果發生異常,程序會輸出相應的錯誤信息。最后,我們使用finally語句確保Scanner對象被正確關閉。