Javaクラスを使用していますが、hasNextコマンドを使用して2つのユーザー入力変数が数値であることを確認する代入に固執しています。これはこれまで私が持っていたものです。hasNextメソッドで2つの変数をチェックする際にエラーが発生する
スキャナsc =新しいスキャナ(System.in);
String choice = "y";
double firstside;
double secondside;
//obtain user input
while (choice.equalsIgnoreCase("y")) {
System.out.println("Enter First Side: ");
if (sc.hasNextDouble()) {
firstside = sc.nextDouble();
} else {
sc.nextLine();
System.out.println("Please enter a numeric value and try again.");
continue;
}
while (true){
System.out.println("Enter Second Side: ");
if (sc.hasNextDouble()) {
secondside = sc.nextDouble();
break;
} else {
sc.nextLine();
System.out.println("Please enter a numeric value and try again.");
}
}
//calculate results
double hypotenusesquared = Math.pow(firstside, 2) + Math.pow(secondside, 2);
double hypotenuse = Math.sqrt(hypotenusesquared);
//display results
String output = "Hypotenuse = " + hypotenuse;
System.out.println(output);
System.out.println("Would you like to continue? Y/N?");
choice = sc.next();
}
}}
エラーが発生したときに私は受け付けており、出力は次のようになります。
数値を入力して、もう一度お試しください。最初の面に入力:数値を入力してもう一度お試しください。第一の側を入力します。
私は受信のみするつもり:
数値を入力して、もう一度お試しください。最初の面に入力:
"第1面"と "第2面"の両方を求める大きなループがあるからです。ループの先頭に戻ると、ループの先頭にあるので、「最初の面」をもう一度尋ねます。あなたのプログラムには、「第二の側面」の質問に戻ることができる何もありません。これを修正するには、「第2の側」入力コードをそれ自身のループに入れます。 – ajb
@ajbが言ったことを拡張するために、 'continue'キーワードは2番目の変数をもう一度尋ねるのではなく、ループ全体を繰り返します。したがって、2番目の値に2つ以外の値を入力すると、最初に戻ります。 2番目の入力質問を独自のループに入れたり、do/whileループに入れることができます。 – CynePhoba12