首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java Scanner 直接按回車報錯:空輸入處理與異常捕獲

     編輯:程式設計疑難解答

錯誤代碼


String[] num = in.nextLine().split(" ");
int[] number = new int[num.length]; // 空輸入時 num.length=1, num[0]="",Integer.valueOf("") 拋 NumberFormatException
for (int i=0; i

現象

  • 直接按回車 → nextLine() 返回 ""。
  • split(" ") 返回 [""](長度 1)。
  • Integer.valueOf("") 拋 NumberFormatException。

修正:先判斷空輸入


String line = in.nextLine().trim();
if (line.isEmpty()) {
    System.out.println("#Total:0");
    return;
}
String[] num = line.split("\\s+"); // \\s+ 匹配多個空白
int[] number = new int[num.length];
for (int i = 0; i < number.length; i++) {
    number[i] = Integer.parseInt(num[i]); // parseInt 比 valueOf 稍快
}
System.out.println("#Total:" + number.length);

關鍵點

  1. trim() 去除首尾空白,isEmpty() 判斷真空行。
  2. split("\\s+") 兼容多空格、Tab、換行等空白字符。
  3. 捕獲 NumberFormatException 可進一步防呆(如輸入非數字)。

進階:通用安全讀取整數數組


public static int[] readIntArray(Scanner in, String prompt) {
    while (true) {
        System.out.print(prompt);
        String line = in.nextLine().trim();
        if (line.isEmpty()) return new int[0];
        try {
            return Arrays.stream(line.split("\\s+"))
                         .mapToInt(Integer::parseInt)
                         .toArray();
        } catch (NumberFormatException e) {
            System.out.println("包含非整數,請重新輸入");
        }
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved