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

Java Scanner 輸入空白/換行導致陣列越界:split 結果長度不足

     編輯:程式設計綜合問答

輸入空格或直接按 Enter,`sn.nextLine()` 得到 `" "` 或 `""`,`split(";")` 只產生 1 個元素,後續 `userPwd[1]` 拋 `ArrayIndexOutOfBoundsException`。

根因

輸入不包含分號 `;`,`split` 回傳長度 1 陣列,存取索引 1 越界。

修正

  1. 先驗證格式:
    
    if (!userPWD.contains(";")) { System.out.println("格式錯誤"); continue; }
    String[] parts = userPWD.split(";");
    if (parts.length != 2) { System.out.println("格式錯誤"); continue; }
    
  2. 去除首尾空白:`userPWD = userPWD.trim();`
  3. 建議用 `Scanner` 直接讀兩欄:
    
    System.out.print("用戶名: "); String user = sn.next();
    System.out.print("密碼: "); String pwd = sn.next();
    
    避免手動分割。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved