简体   繁体   中英

this is a quiz program where i have to select 1 option from 4 and after I have to display how many wrong and right answer a user get

I don't know how to calculate how many is right and how many is wrong.

This is a quiz program where i have to select 1 option from 4 and after I have to display how many wrong and right answer a user gets...

My question is how I will calculate how many total wrong and right answer I got and percentage of total correct answer.

I need to calculate it at the end. I don't no how to calculate how many is right and how many is wrong.

//import scanner
import java.util.Scanner;

public class Quiz {

    //main method
    public static void main(String[] args) {
        //variable
        int choices;
        int song;
        int song2;
        int song3;
        int song4;
        int song5;

        //scanner for input options
        Scanner scan = new Scanner(System.in);
        System.out.println("Who sing this the song 'Locked Away':");

        //choose singer from these 4 options
        System.out.println("Choose 1 for R. City & Adam Levine's. \nChoose 2 for Justin Bieber.  \nChoose 3 for Selena Gomez. \nChoose 4 for Katy Perry.");
        song = scan.nextInt();


        if (song != 1) {
            //if select wrong options
            System.out.println("Your answer is incorrect  R. City & Adam Levine's is the right answer .");
        }

        {
            while (song == 1) {
                //selected right option
                System.out.println("Congrate you answer is correct");

                song++;
            }
            System.out.println();
        }


        System.out.println("Who sing this the song 'Beauty and the beast':");

        //choose singer from these 4 options
        System.out.println("Choose 1 for R. City & Adam Levine's. \nChoose 2 for Justin Bieber.  \nChoose 3 for Selena Gomez. \nChoose 4 for Katy Perry.");
        song2 = scan.nextInt();


        if (song2 != 2) {
            System.out.println("Your answer is incorrect  Justin Bieber is the right answer.");
        }

        {
            while (song2 == 2) {
                System.out.println("Congrate you answer is correct ");
                song2++;
            }
            System.out.println();
        }
        //name the singer of this song
        System.out.println("Who sing this the song 'Heal the world':");

        //choose singer from these 4 options
        System.out.println("Choose 1 for R. City & Adam Levine's. \nChoose 2 for Micheal Jackson.  \nChoose 3 for Selena Gomez. \nChoose 4 for Katy Perry.");
        song4 = scan.nextInt();


        if (song4 != 2) {
            System.out.println("Your answer is incorrect  Micheal Jackson is the right answer.");
        }

        {
            while (song4 == 2) {
                //display congrate message for right answer
                System.out.println("Congrate you answer is correct");
                song4++;
            }
            System.out.println();
        }

        //display Question
        System.out.println("Who sing this the song 'Roar':");

        //choose singer from these 4 options
        System.out.println("Choose 1 for R. City & Adam Levine's. \nChoose 2 for Justin Bieber.  \nChoose 3 for Selena Gomez. \nChoose 4 for Katy Perry.");
        song3 = scan.nextInt();


        if (song3 != 4) {
            //display congrate message for incorrect answer
            System.out.println("Your answer is incorrect  Katy Perry is the right answer.");
        }

        {
            while (song3 == 4) {
                //display congrate message for right answer
                System.out.println("Congrate you answer is correct");
                song3++;
            }
            System.out.println();
        }
        //name of a singer
        System.out.println("Who sing this the song 'The Heart Wants What It Wants ':");

        //choose singer from these 4 options
        System.out.println("Choose 1 for R. City & Adam Levine's. \nChoose 2 for Justin Bieber.  \nChoose 3 for Selena Gomez. \nChoose 4 for Katy Perry.");
        song5 = scan.nextInt();
        if (song5 != 3) {
            System.out.println("Your answer is incorrect  Salena Gomez is the right answer.");
        }
        {
            //using while loop
            while (song5 == 3) {
                //display congrats message for right answer
                System.out.println("Congrats you answer is correct");
                //stop repeating
                song5++;
            }  //stop repeating
            System.out.println();
        }
    }
}

I think this is what you are looking for

import java.util.Scanner;


public class QuizProgram {

     //Initializaions and Instantiations
    static Scanner cin = new Scanner(System.in);

    public static void main(String[] args)
    {
           double score = 0;
           final double NumberofQuestions = 5;

          System.out.println("\n\n\n\n\n\n\n\t\tQuiz 1.0\n\n");

           //Store questions and answers in 2 dimensional array
           String[][] QandA = {
                               {"Who sing this the song 'Locked Away':?","\nChoose 1 for R. City & Adam Levine's. \nChoose 2 for Justin Bieber.  \nChoose 3 for Selena Gomez. \nChoose 4 for Katy Perry.","1"},
                               {"Who sing this the song 'Beauty and the beast'?","\nChoose 1 for R. City & Adam Levine's. \nChoose 2 for Justin Bieber.  \nChoose 3 for Selena Gomez. \nChoose 4 for Katy Perry.","2"},
                               {"Who sing this the song 'Heal the world'?","\nChoose 1 for R. City & Adam Levine's. \nChoose 2 for Micheal Jackson.  \nChoose 3 for Selena Gomez. \nChoose 4 for Katy Perry.","2"},
                               {"Who sing this the song 'Roar'?","\nChoose 1 for R. City & Adam Levine's. \nChoose 2 for Justin Bieber.  \nChoose 3 for Selena Gomez. \nChoose 4 for Katy Perry.","4"},
                               {"Who sing this the song 'The Heart Wants What It Wants '?","\nChoose 1 for R. City & Adam Levine's. \nChoose 2 for Justin Bieber.  \nChoose 3 for Selena Gomez. \nChoose 4 for Katy Perry.","3"} };

          String[] Answers = new String[(int) NumberofQuestions];

         //loop through each string in the array and compare it to answers
         //for(int x = 0; x < NumberofQuestions; x++)
          int x=0;
          do
         {
              System.out.print("" + (x+1) + ". " + QandA[x][0] + "   "+QandA[x][1]);

              Answers[x] = String.valueOf(cin.nextInt());

              Answers[x].toLowerCase();

              if(QandA[x][2].equals(Answers[x]))
              {
                   score++;
              }//close if 
              else
              {
                  System.out.println("\n Incorrect. The right answer is "+QandA[x][2]);
              }

              System.out.print("\n");
              x++;
         }while(x<NumberofQuestions);//close outer loop                                 

         System.out.println("\n\t\tYou got " + score + " of "
                            + NumberofQuestions + " right!\n\n\n"); 

         System.out.println("\n\t\tYour percentage is " + ((score/NumberofQuestions)*100)+"%"); 


         System.exit(0);

    }//close main() function  

//-------------------------------------------------------------------------------

}//close Quiz class

The general trend would be to keep two variables for right and wrong choices. The structure should be like:

   int correctAnswers = 0;
    int wronganswers = 0;
    //scanner for input options
    Scanner scan = new Scanner(System.in);
    System.out.println("Who sing this the song 'Locked Away':");
    //choose singer from these 4 options
    System.out.println("Choose 1 for R. City & Adam Levine's. \nChoose 2 for Justin Bieber.  \nChoose 3 for Selena Gomez. \nChoose 4 for Katy Perry.");
    song = scan.nextInt();
    if (song != 1) {
        //if select wrong options
        System.out.println("Your answer is incorrect  R. City & Adam Levine's is the right answer .");
        wronganswers++;
    } else {
        System.out.println("Congrate you answer is correct");
        song++;
        correctAnswers++;
    }

You can modify it as per your requirement.

I have used Dynamic memory allocation approach for this using arrayList. In the link I have made MCQ based question along with their options. see more

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM