¿Hacer una prueba de Java y repetir una respuesta incorrecta?

Estoy tratando de crear un cuestionario para que te haga una pregunta de opción múltiple, aunque parece que no puedo encontrar la forma de volver a la pregunta incorrecta. Todavía soy un poco nuevo en la programación de Java y mi comprensión es lamentablemente no tan bien..

Esto es lo que he codificado actualmente,

import java.util.*;
import java.util.Scanner;
import javax.swing.JOptionPane;

public class Quiz2
{
public static int question;
public static int question2;
public static int question3;
public static int question4;
public static int question5;

public static String guess;
public static String guess2;
public static String guess3;
public static String guess4;
public static String guess5;

public static void main(String[] args)
{   
    //create a scanner object
    Scanner sc = new Scanner(System.in);

    JOptionPane.showMessageDialog(null, "Hi, This is my Quiz\nYou will be asked a total of 5 questions in multiple choice format\nPlease answer as A/B/C/D (Not case sensative)", "Introduction",
    JOptionPane.INFORMATION_MESSAGE);

    //Asks for a paricular item from the keyboard
    guess  = JOptionPane.showInputDialog(null, "1. Which of the following is not a bright colour?\nA. Cyan\nB. Green\nC. Black\nD. Yellow\nAnswer: ", "Question 1",
    JOptionPane.INFORMATION_MESSAGE);

    //Asks for a paricular item from the keyboard
    guess2  = JOptionPane.showInputDialog(null, "2. What genre does the singer John Legend sing in?\nA. Pop\nB. R&b\nC. Rap\nD. Rock\nAnswer: ", "Question 2",
    JOptionPane.INFORMATION_MESSAGE);

    //Asks for a paricular item from the keyboard
    guess3  = JOptionPane.showInputDialog(null, "3. What is the largest discovered Star in the Universe?\nA. The Sun\nB. VY Canis Majoris\nC. Eta Carinae\nD. Beetlejuice\nAnswer: ", "Question 2",
    JOptionPane.INFORMATION_MESSAGE);

    //Asks for a paricular item from the keyboard
    guess4  = JOptionPane.showInputDialog(null, "4. Who is Ronaldinho Gaucho?\nA. A famous Soccer player\nB. A famous Singer\nC. The founder of Microsoft\nD. A famous Actor\nAnswer: ", "Question 2",
    JOptionPane.INFORMATION_MESSAGE);

    //Asks for a paricular item from the keyboard
    guess5  = JOptionPane.showInputDialog(null, "5. Who is the actor who played the role as the terminator in the movie Last Action Hero?\nA. Arnold Schwarzenegger\nB. Adam Sandler\nC. Jean Claude Van Damme\nD. Sylvester Stallone\nAnswer: ", "Question 2",
    JOptionPane.INFORMATION_MESSAGE);

    char x1 = guess.charAt(0);
    char x2 = guess2.charAt(0);
    char x3 = guess3.charAt(0);
    char x4 = guess4.charAt(0);
    char x5 = guess5.charAt(0);

    switch (x1)
    {
        case 'a': 
        case 'A':
                    JOptionPane.showMessageDialog(null, "Incorrect! Cyan is a bright colour, Please Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'b':
        case 'B':
                    JOptionPane.showMessageDialog(null, "Incorrect! Green is a bright colour, Please Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'c': 
        case 'C':
                    JOptionPane.showMessageDialog(null, "Correct! Black is not a bright colour", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'd':
        case 'D': 
                    JOptionPane.showMessageDialog(null, "Incorrect! Yellow is a bright colour, Please Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
    }



    switch (x2)
    {
        case 'a': 
        case 'A':
                    JOptionPane.showMessageDialog(null, "Incorrect! John Legend is not a Pop Singer!,\nPlease Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'b':
        case 'B':
                    JOptionPane.showMessageDialog(null, "Correct! John Legend is a R&B Singer!", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'c': 
        case 'C':
                    JOptionPane.showMessageDialog(null, "Incorrect! John Legend does not Rap!,\nPlease Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'd':
        case 'D': 
                    JOptionPane.showMessageDialog(null, "Incorrect! John Legend is not in the genre of Rock!,\nPlease Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
    }

    switch (x3)
    {
        case 'a': 
        case 'A':
                    JOptionPane.showMessageDialog(null, "Incorrect! The Sun is the Biggest Star in our Solar System and not the Universe!,\nPlease Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'b':
        case 'B':
                    JOptionPane.showMessageDialog(null, "Correct! VY Canis Majoris is currently the Largest Star Discovered in the Universe!", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'c': 
        case 'C':
                    JOptionPane.showMessageDialog(null, "Incorrect! Eta Carinae is the Second Largest Star Discovered in the Universe!,\nPlease Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'd':
        case 'D': 
                    JOptionPane.showMessageDialog(null, "Incorrect! Beetlejuice is the Third Largest Star Discovered in the Universe!,\nPlease Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
    }

    switch (x4)
    {
        case 'a': 
        case 'A':
                    JOptionPane.showMessageDialog(null, "Correct! Ronaldinho Gaucho is a famous Soccer player!", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'b':
        case 'B':
                    JOptionPane.showMessageDialog(null, "Incorrect! Ronaldinho Gaucho is not a Singer!,\nPlease Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'c': 
        case 'C':
                    JOptionPane.showMessageDialog(null, "Incorrect! Bill Gates was the founder of Microsoft! NOT Ronaldinho Gaucho!!,\nPlease Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'd':
        case 'D': 
                    JOptionPane.showMessageDialog(null, "Incorrect! Ronaldinho Gaucho is not an actor!,\nPlease Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
    }

    switch (x5)
    {
        case 'a': 
        case 'A':
                    JOptionPane.showMessageDialog(null, "Incorrect! Arnold Schwarzenegger was the main actor of Last Action Hero, but in that same movie, who played the role as the terminator?\n Try Again!,\nPlease Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'b':
        case 'B':
                    JOptionPane.showMessageDialog(null, "Incorrect! No its not Adam Sandler, but it would be funny if it was!,\nPlease Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'c': 
        case 'C':
                    JOptionPane.showMessageDialog(null, "Incorrect! It could have been Jean Claude Van Damme!\nBut its not....\nPlease Try Again..", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
        case 'd':
        case 'D': 
                    JOptionPane.showMessageDialog(null, "Correct! Sylvester Stallone played the role as the Terminator in the Movie Last Action Hero!", "Answer CHECK!",
                    JOptionPane.INFORMATION_MESSAGE);
                    break;
    }
}
}

Ahora, usando este código. ¿Cómo creo un bucle para la respuesta incorrecta? La ayuda sería muy apreciada, gracias.

Respuesta 1

Su enfoque solo funcionará realmente para un ejemplo muy simple y obviamente tiene problemas para reaccionar ante el usuario porque no está realizando un seguimiento del estado.

Escribí esto que hace lo que quieres (creo). Míralo y avísame si tienes preguntas sobre cómo / por qué están las cosas.

https://gist.github.com/3579413

(Lo puse en una idea pública porque hay mucho código ...) Lo ideal sería dividir esas clases en sus propios archivos para no terminar con un archivo enormemente engorroso. Con suerte se entiende la idea.

Respuesta: 2

Debe extraer su bloque de código de preguntas en un método separado (¡o 2!). Esto le permitirá llamarlo más convenientemente más de una vez si es necesario. Esto se vería algo así como:

while (!askQuestionsWithAllCorrect()) {
   System.out.println("Asking again...");
}

Por supuesto, podría darle al usuario la opción de volver a intentar las preguntas dentro del ciclo while.

Respuesta: 3

Hay varios mecanismos de bucle disponibles para usted (para, do-while, etc.). ¿Cuándo (si alguna vez) debería el programa dejar de recorrer las preguntas? ¿Debería recorrer todas las preguntas (incluidas las que ha respondido correctamente)?

La respuesta corta es que debe repetir las preguntas y la verificación de las preguntas. Definir las preguntas no necesita ser repetido. Por lo tanto, su bucle (cualquiera que decida usar) debe rodear la parte del código que (a) muestra las preguntas [char x1 = ...] y luego (b) verifica y muestra la respuesta [final de la declaración de cambio ]

Respuesta: 4

Tengo la siguiente cadena: "Perl es el único idioma que se ve igual antes y después del cifrado RSA". :) Este patrón "\\ p {javaUpperCase}. * \\." busca caracteres en mayúscula y punto. Eso ...

Soy nuevo en Java y quiero mejorar mis habilidades de OOP. Por lo tanto, trato de escribir todos mis "primeros programas" orientados a objetos. De todos modos ... comencé un pequeño programa de prueba de primitivas: clase pública ...

Vi que en Gradle, declaramos un módulo como artifact / src / main / java / module-info.java, pero en OpenJDK lo declaran como src / com.group.artifact / module-info.java. Luego, en Jenkov tenemos src / main / java / ...

¿Alguien tiene alguna idea creativa sobre cómo puedo resolver esta advertencia? Error de sintaxis EL: la expresión no puede comenzar con el operador binario causado por el siguiente código: String.format ("# {myController ....