我正在學習 Java,但我不知道是什么讓我的代碼無法讀取 else-if 條件(i == 5)
int i;
for (i = 1; i <= 5; i ) {
int guess = scanner.nextInt();
System.out.println("Attempt: " i "/5");
if (guess < numberToGuess) {
System.out.println("Higher");
} else if (guess > numberToGuess) {
System.out.println("Lower");
} else if (i == 5) {
System.out.println("You failed! The correct answer is " numberToGuess);
} else {
System.out.println("You won! Your answer is " numberToGuess " which is correct!");
break;
}
當我運行代碼并嘗試通過達到最大 int i 數(即 5)使游戲失敗時,應該出現第二個 else if 陳述句,但它不起作用。
我只是不明白為什么它沒有讀取 (i==5) 條件,除此之外所有其他條件都有效。
uj5u.com熱心網友回復:
好吧,if-else 陳述句的作業原理是這樣的:當滿足任何一個陳述句時,其余的將被忽略。以你的為例。
if (guess < numberToGuess) {
System.out.println("Higher");
} else if (guess > numberToGuess) {
System.out.println("Lower");
} else if (i == 5) {
System.out.println("You failed! The correct answer is " numberToGuess);
} else {
System.out.println("You won! Your answer is " numberToGuess " which is correct!");
break;
}
即使i == 5,如果滿足guess < numberToGuess或guess > numberToGuess,其余的陳述句包括(i == 5)被忽略。
要解決這個問題,只需添加i == 5作為檢查的第一個條件,因為如果i == 5滿足,我們無論如何都不應該考慮猜測。
我也猜你想在游戲結束時跳出回圈,所以我也添加了一條break陳述句。
if (i == 5) {
System.out.println("You failed! The correct answer is " numberToGuess);
break;
} else if (guess < numberToGuess) {
System.out.println("Higher");
} else if (guess > numberToGuess) {
System.out.println("Lower");
} else {
System.out.println("You won! Your answer is " numberToGuess " which is correct!");
break;
}
uj5u.com熱心網友回復:
所以,看起來是這樣,因為在檢查您是否處于正確的回圈條件下之前,會檢查變數
...
if (guess < numberToGuess) {
System.out.println("Higher");
} else if (guess > numberToGuess) {
System.out.println("Lower");
}
....
哪些被執行。因此,要修復該錯誤,只需將您的檢查 i == 5 移動為第一個分支子句。代碼應該如下所示
if (i == 5) {
System.out.println("You failed! The correct answer is " numberToGuess);
} else if (guess > numberToGuess) {
System.out.println("Lower");
} else if (guess < numberToGuess) {
System.out.println("Higher");
} else {
System.out.println("You won! Your answer is " numberToGuess " which is correct!");
break;
}
這樣你首先檢查回圈條件,然后輸入條件
uj5u.com熱心網友回復:
這就是if/else if/else作業原理,您的值將低于或高于猜測值,因此第 2 個條件的一個為真,然后不會檢查其他條件
首先設定停止條件
int nb_tries = 5;
for (i = 1; i <= nb_tries; i ) {
System.out.print("Attempt: " i "/" nb_tries " => ");
int guess = scanner.nextInt();
if (i == nb_tries) {
System.out.println("You failed! The correct answer is " numberToGuess);
} else if (guess < numberToGuess) {
System.out.println("Higher");
} else if (guess > numberToGuess) {
System.out.println("Lower");
} else {
System.out.println("You won! Your answer is " numberToGuess " which is correct!");
break;
}
}
uj5u.com熱心網友回復:
使用 if-else 陳述句時的 Thumb 規則是最早滿足哪個條件,它將進入該陳述句,然后在 if-else 條件之外執行代碼。
因此,在您的情況下,if-else 陳述句的作業方式如下:當滿足任何一個陳述句時,其余的將被忽略。以你的為例。
if (guess < numberToGuess) {
System.out.println("Higher"); } else if (guess > numberToGuess) {
System.out.println("Lower"); } else if (i == 5) {
System.out.println("You failed! The correct answer is " numberToGuess); } else {
System.out.println("You won! Your answer is " numberToGuess " which is correct!");
break; }
即使當 i == 5 時,如果guess < numberToGuess 或guess > numberToGuess 中的任何一個滿足,它將執行其中任何一個而不是i==5。 所以只要想想你想給予更多優先級的邏輯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/491239.html
