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

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

Barbara Streisand
發布: 2024-12-05 15:03:14
原創
673 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板