簡體   English   中英

為什么我的 output 在我的 switch 語句之后沒有顯示

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM