[英]Why isn't my output showing after my switch statement
我現在正在學習 Java,我以前從未使用過 switch 語句。 我嘗試輸入一個簡單的魔法測驗,但 switch 語句中的某些內容不起作用。
我嘗試在程序的各個點放置文本,以測試程序是否每次都到達該代碼。 我在實際開關中有很好的反應,所以如果我回答問題 1 錯誤,就會出現文本提示。 但是任何晚於 switch 語句內部,並且在 for 循環的所有迭代完成之前,我的評分 output 都不會出現。 我嘗試將“正確/不正確”的 output 移動到各個點,但它們似乎都不起作用。
Scanner myScanner = new Scanner(System.in);
System.out.println("Enter your name!");
String name = myScanner.nextLine();
int wrongCounter = 0;
boolean correctChecker = false;
int score = 0;
String answer;
System.out.println("Welcome to the Charmed Quiz, " + name + "!");
for (int i = 0; i < 10; i++) {
if (wrongCounter < 4) {
switch(i) {
case 0:
System.out.println("Who read the spell that gave the Charmed Ones their powers?");
System.out.println("Enter your answer");
answer = myScanner.nextLine();
switch (answer) {
case "Pheobe":
correctChecker = true;
break;
default:
correctChecker = false;
break;
}
case 1:
System.out
.println("Who travelled to a cursed town with Prue when Pheobe was shot in a premonition?");
System.out.println("Enter your answer");
answer = myScanner.nextLine();
switch (answer) {
case "Cole":
correctChecker = true;
break;
default:
correctChecker = false;
break;
}
}
if (correctChecker == true) {
score++;
System.out.println("Correct!");
} else {
wrongCounter++;
System.out.println("Incorrect!");
}
這段代碼有很多很多問題。 主要問題是break
破壞了它可以破壞的最接近的構造,在您的情況下是內部switch
。 而你的意圖顯然是打破兩者。 [A] 在case 1:
語句之前添加另一個break
,或者 [B] 使用帶標簽的中斷; 在第一個(主要/外部) switch
之前放置類似outer:
的內容,然后讓所有這些語句都break outer;
.
但是,實際上,這些(無論是外部還是內部)在 switch 形式中都沒有任何意義。 我知道這是一個學習練習,但我會想一些其他的東西來學習。
還有,是菲比,不是菲比。
這絕對不是實現問答游戲的最佳方式,但如果您將此作為學習練習,那么最好的做法是聽取@rzwitserloot 的建議。
在主 switch 語句 case 之后添加一個 break,而不是內部 switch 語句。
雖然當您可以使用correctChecker = "Pheobe".equals(answer);
時,內部 switch 語句並沒有真正的用處。 在一行中獲取真或假 boolean 值。
這只是意味着您可以避免使用第二個 switch 語句,從而減少混亂。
總而言之,您的案例可能看起來像這樣:
case 0:
System.out.println("Who read the spell that gave the Charmed Ones their powers?");
System.out.println("Enter your answer");
answer = myScanner.nextLine();
correctChecker = "Pheobe".equals(answer);
break;
}
將來,最好將問題和答案存儲在一個數組中,並使用 for 循環對其進行迭代。 這是關於這個主題的一個很好的教程。
祝您項目的 rest 好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.