首頁 > Java > java教程 > 如何使用 Scanner 在 Java 中驗證整數輸入並處理無效輸入?

如何使用 Scanner 在 Java 中驗證整數輸入並處理無效輸入?

Barbara Streisand
發布: 2024-12-12 21:10:19
原創
149 人瀏覽過

How to Validate Integer Input and Handle Invalid Input in Java using Scanner?

如何使用掃描器驗證整數輸入並處理無效輸入

在Java 中,在處理使用者輸入時,確保數值資料的有效性對於程序的穩健性至關重要。本文示範如何使用 Scanner 類別強制執行有效的整數輸入並優雅地處理無效輸入,例如非數字字元。

問題:

考慮以下內容code:

Scanner kb = new Scanner(System.in);
int num1;
int num2 = 0;

System.out.print("Enter number 1: ");
num1 = kb.nextInt();

while(num2 < num1) {
    System.out.print("Enter number 2: ");
    num2 = kb.nextInt();
}
登入後複製

此程式碼旨在提示使用者輸入兩個整數,確保num2 大於編號1 。然而,它面臨兩個挑戰:

  1. 它不驗證使用者輸入是否實際上是整數。當使用者輸入非數字字元時,這可能會導致運行時異常。
  2. 它不處理使用者輸入 num2 作為小於 num1 的值的情況。

解:

為了解決這些挑戰,我們可以利用 Scanner 的 hasNextInt() 方法。此方法傳回布林值,指示輸入流中的下一個標記是否可以解釋為整數。如果傳回 false,我們就知道輸入無效,可以提示使用者重試。

這是程式碼的改進版本:

Scanner sc = new Scanner(System.in);
System.out.print("Enter number 1: ");
while (!sc.hasNextInt()) sc.next();
int num1 = sc.nextInt();
int num2;
System.out.print("Enter number 2: ");
do {
    while (!sc.hasNextInt()) sc.next();
    num2 = sc.nextInt();
} while (num2 < num1);
System.out.println(num1 + " " + num2);
登入後複製

在此程式碼中,我們檢查在嘗試讀取有效整數之前使用 hasNextInt() 。如果輸入無效,我們使用 sc.next() 消耗輸入並再次提示使用者。

優點:

  • 確保僅有效整數被接受為輸入。
  • 優雅地處理無效輸入,防止運行時異常。
  • 強制 num2 大於 num1。
  • 消除了明確 parseInt() 和 NumberFormatException 錯誤處理的需要。

相關問題:

  • 我該如何忽略輸入無效並使用 Java Scanner 從輸入流讀取下一個有效值?

以上是如何使用 Scanner 在 Java 中驗證整數輸入並處理無效輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板