スキャナを使用しようとするとcatchステートメントがクラッシュする問題があります。私は私のcomp sciクラスのシンプルなロックペーパーハサミプログラムを作っています。私の目標はクラッシュすることを事実上不可能にすることです。私のコードは次のとおりです。スキャナがcatchステートメントをクラッシュする
public class RPS {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Random gen = new Random();
int rounds = 0, choice, playerchoice = 0, complete, playerwins, compwins;
String cont = "y";
System.out.println("Rock, Paper, Scissors!");
while ("y".equalsIgnoreCase(cont)) {
complete = 0;
playerwins = 0;
compwins = 0;
System.out.println("How many rounds would you like to play?"
+ " (1, best of 3, or best of 5)");
while (true) {
try {
rounds = scan.nextInt();
while (rounds != 1 && rounds != 3 && rounds != 5) {
System.out.println("Invalid number of rounds.");
System.out.println("One game, best of 3, or best of 5?");
rounds = scan.nextInt();
}
break;
} catch (Exception e) {
while (rounds != 1 && rounds != 3 && rounds != 5) {
System.out.println("Invalid number of rounds.");
System.out.println("One game, best of 3, or best of 5?");
rounds = scan.nextInt();
}
}
}
netbeansがtryブロック内でInputMismatchExceptionをスローしない限り、コードは完全に正常に進みます。 catchステートメントはこの種の事柄を止めることになっていますが、それでもクラッシュしてしまいます。理由はわかりません。
私は穏やかな高校生なので、私が使用している恐ろしいコーディングの慣例に対してお詫び申し上げます。私の唯一の目標は、これを動作させることです。
質問にスタックトレースを追加する必要があります。キャッチブロックで何が失敗したのかを教えてくれます。 Stacktraceを印刷するには、あなたの前にキャッチブロックに 'e.printStackTrace();'を追加します。 – SWiggels