1. ホーム
  2. java

[解決済み] Java、Scannerでtry-catch

2022-02-13 18:30:50

質問

私は小さなアルゴリズムを作成しており、これはその一部です。

ユーザーが整数以外の値を入力した場合、メッセージを出力し、再度数値を入力させたい。

boolean wenttocatch;

do 
{
    try 
    {
        wenttocatch = false;
        number_of_rigons = sc.nextInt(); // sc is an object of scanner class 
    } 
    catch (Exception e) 
    {
        wenttocatch=true;
        System.out.println("xx");
    }
} while (wenttocatch==true);

終わらないループが発生するのですが、原因がわかりません。

ユーザーが整数でない数値を入力した場合、どのように識別すればよいですか?
ユーザーが整数以外の数値を入力した場合、どのように再入力してもらえばよいですか?

更新する
例外を印刷するときに 'InputMismatchException' が発生します。

どのように解決するのですか?

トライキャッチをする必要はありません。このコードで解決できます。

public static void main(String[] args) {
    boolean wenttocatch = false;
    Scanner scan = new Scanner(System.in);
    int number_of_rigons = 0;
    do{
        System.out.print("Enter a number : ");
        if(scan.hasNextInt()){
            number_of_rigons = scan.nextInt();
            wenttocatch = true;
        }else{
            scan.nextLine();
            System.out.println("Enter a valid Integer value");
        }
    }while(!wenttocatch);
}