Java пока l oop Тест не сбрасывается - PullRequest
1 голос
/ 12 февраля 2020

В рамках моей курсовой работы мне было поручено создать простую игру-викторину, которая повторяется до тех пор, пока пользователь не выберет правильный ответ. Я могу сгенерировать подсказку с сообщением и подсказку, когда ответ правильный (ответ B) или неправильный, но я изо всех сил пытаюсь получить время l oop для сброса и запроса пользователя снова. В настоящее время бесконечные циклы в ответном запросе, когда пользователь получает неправильный ответ.

import javax.swing.JOptionPane;
public class Quiz {      

public static void main(String[] args) {
    String question =  "What colour is the sky?\n";
     question += "A. Purple\n";
     question += "B. Blue\n";
     question += "C. Green\n";
     question += "D. Yellow\n";
     question += "E. Orange\n";

     String answer = JOptionPane.showInputDialog(question);
     answer = answer.toUpperCase();

     int guess = 0;
     while (answer != "B")

     if (answer.equals("B")) {
         JOptionPane.showMessageDialog(null,"Correct!");
         break;
        }
     else if (answer.equals("A")) {
         JOptionPane.showMessageDialog(null,"Incorrect. Please try again!");
        }
     else if (answer.equals("C")) {
         JOptionPane.showMessageDialog(null,"Incorrect. Please try again!");
        }
     else if (answer.equals("D")) {
         JOptionPane.showMessageDialog(null,"Incorrect. Please try again!");
        }
     else if (answer.equals("E")) {
         JOptionPane.showMessageDialog(null,"Incorrect. Please try again!");
        }
     else {
         JOptionPane.showMessageDialog(null, "Invalid answer. Please enter A, B, C, D, or E.");
        }
     guess++;
}
}

Ответы [ 3 ]

0 голосов
/ 12 февраля 2020

Вы забыли дать возможность снова ответить на вопрос. Теперь он работает так, как вы хотели.

    public static void main(String[] args) {
    String question =  "What is the Capital of South Africa?\n";
    question += "A. Cape town\n";
    question += "B. Pretoria\n";
    question += "C. Johannesburg\n";
    question += "D. Durban\n";
    question += "E. Nelspruit\n";

    String answer = JOptionPane.showInputDialog(question);
    answer = answer.toUpperCase();

    int guess = 0;
    while (answer != "B") {
        answer = JOptionPane.showInputDialog(question);
        answer = answer.toUpperCase();
        if (answer.equals("B")) {
            JOptionPane.showMessageDialog(null, "Correct!");
            break;
        } else if (answer.equals("A")) {
            JOptionPane.showMessageDialog(null, "Incorrect. Please try again!");
        } else if (answer.equals("C")) {
            JOptionPane.showMessageDialog(null, "Incorrect. Please try again!");
        } else if (answer.equals("D")) {
            JOptionPane.showMessageDialog(null, "Incorrect. Please try again!");
        } else if (answer.equals("E")) {
            JOptionPane.showMessageDialog(null, "Incorrect. Please try again!");
        } else {
            JOptionPane.showMessageDialog(null, "Invalid answer. Please enter A, B, C, D, or E.");
        }
        guess++;
    }
}
0 голосов
/ 12 февраля 2020

Вы должны снова и снова запрашивать вопрос, если пользовательский ввод не B. А внутри пока l oop нужно поменять значение переменной answer. Попробуйте ниже рабочий фрагмент.

public class Quiz{

    public static void main(String[] args) throws IOException {

        String answer = promptQuestion();

        while (answer != "B") {
            if (answer.equals("B")) {
                JOptionPane.showMessageDialog(null, "Correct!");
                break;
            } else if (answer.equals("A")) {
                JOptionPane.showMessageDialog(null, "Incorrect. Please try again!");
                answer = promptQuestion();
            } else if (answer.equals("C")) {
                JOptionPane.showMessageDialog(null, "Incorrect. Please try again!");
                answer = promptQuestion();
            } else if (answer.equals("D")) {
                JOptionPane.showMessageDialog(null, "Incorrect. Please try again!");
                answer = promptQuestion();
            } else if (answer.equals("E")) {
                JOptionPane.showMessageDialog(null, "Incorrect. Please try again!");
                answer = promptQuestion();
            } else {
                JOptionPane.showMessageDialog(null, "Invalid answer. Please enter A, B, C, D, or E.");
                answer = promptQuestion();
            }
        }
    }

    public static String promptQuestion() {
        String question = "What is the Capital of South Africa?\n";
        question += "A. Cape town\n";
        question += "B. Pretoria\n";
        question += "C. Johannesburg\n";
        question += "D. Durban\n";
        question += "E. Nelspruit\n";

        String answer = JOptionPane.showInputDialog(question);
        return answer.toUpperCase();
    }

}
0 голосов
/ 12 февраля 2020

вместо ..

while (answer != "B"){

         answer = JOptionPane.showInputDialog(question);
         answer = answer.toUpperCase();

         if (answer.equals("B")) {
             JOptionPane.showMessageDialog(null,"Correct!");
             break;
            }
         else if (answer.equals("A")) {
             JOptionPane.showMessageDialog(null,"Incorrect. Please try again!");
            }
         else if (answer.equals("C")) {
             JOptionPane.showMessageDialog(null,"Incorrect. Please try again!");
            }
         else if (answer.equals("D")) {
             JOptionPane.showMessageDialog(null,"Incorrect. Please try again!");
            }
         else if (answer.equals("E")) {
             JOptionPane.showMessageDialog(null,"Incorrect. Please try again!");
            }
         else {
             JOptionPane.showMessageDialog(null, "Invalid answer. Please enter A, B, C, D, or E.");
            }
         guess++;
}

вы пропустили скобку.

...