ホームページ > Java > &#&チュートリアル > Java スキャナーが NoSuchElementException をスローするのはなぜですか? それを修正するにはどうすればよいですか?

Java スキャナーが NoSuchElementException をスローするのはなぜですか? それを修正するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-05 15:03:14
オリジナル
650 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート