首頁 >Java >java教程 >為什麼我的 Java 掃描器會拋出 NoSuchElementException,如何修復它?

為什麼我的 Java 掃描器會拋出 NoSuchElementException,如何修復它?

Barbara Streisand
Barbara Streisand原創
2024-12-05 15:03:14668瀏覽

Why Does My Java Scanner Throw a NoSuchElementException, and How Can I Fix It?

NoSuchElementException Java.Util.Scanner 的挫敗感

遇到「NoSuchElementException」錯誤可能會令人困惑,特別是對於像您這樣的Java 新手來說。當 Scanner 類別無法從輸入流檢索下一個標記時,會發生此錯誤。讓我們深入研究您的特定程式碼以找出根本原因:

import java.util.Scanner;

public class Addition {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    int number1; // first number to add
    int number2; // second number to add
    int sum; // sum of 1 & 2

    // Problem: Reading input values without checking for input availability

    System.out.print("Enter First Integer: ");
    number1 = input.nextInt(); // Exception occurs here when no input is provided

    System.out.print("Enter Second Integer: ");
    number2 = input.nextInt(); // Exception occurs here if input is not available for this prompt

    sum = number1 + number2; // Addition occurs, assuming input values are available

    System.out.printf("Sum is %d\n", sum); // Displays the sum, if input is available
  }
}

問題在於程式碼嘗試讀取輸入而不先驗證輸入是否可用。如果使用者未提供輸入或輸入整數以外的內容,則 input.nextInt() 方法會引發「NoSuchElementException」。

解決方案:

消除對於這個問題,我們需要在嘗試檢索之前檢查輸入可用性it:

if (input.hasNextInt()) {
  number1 = input.nextInt();
} else {
  // Handle the case where no input is provided
}

解釋:

hasNextInt()方法檢查輸入流中的下一個標記是否為整數。如果傳回 true,則可以使用 input.nextInt() 方法來檢索整數。否則,程式碼可以優雅地處理這種情況,例如將 number1 設定為 0 或顯示錯誤訊息。

透過實現此檢查,您的程式碼將不再拋出「NoSuchElementException」並且將按預期運行,從而允許使用者輸入整數併計算其總和。

以上是為什麼我的 Java 掃描器會拋出 NoSuchElementException,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn