For this project you will write a Java program that will run a simple math quiz. Your program will generate two random integers between 1 and 20 and then ask a series of math questions. Each question will be evaluated as to whether it is the right or wrong answer. In the end a final score should be reported for the user. (See below for how to generate random numbers).Sample Ouptut This is a sample transcript of what your program should do. Values in the transcript in BOLD show the user inputs. So in this transcript the user inputs 33, Jeremy, 24, -16, and 80 the rest is output from the program.Enter a random number seed: 33Enter your name: JeremyHello Jeremy!Please answer the following questions:4 + 20 = 24Correct!4 - 20 = -16Correct!4 * 20 = 80Correct!You got 3 correct answers!That's 100.0%!Your code will behave differently based on the random number seed you use and the answers provided by the user. Here is a second possible execution of this code. As before, values in BOLD are provided by the user - in this case 54, Bob, 8, 8, and 8 - the rest is the output of the program when you run it.Enter a random number seed: 54Enter your name: BobHello Bob!Please answer the following questions:20 + 12 = 8Wrong!The correct answer is: 3220 - 12 = 8Correct!20 * 12 = 8Wrong!The correct answer is: 240You got 1 correct answers!That's 33.33333333333333%!Random numbers: Random numbers in a computer are rarely random. Instead computers use something known as a pseudorandom number generator. This is a process that gives the appearance of generating a random number sequence, but in fact is entirely predictable if you know the value used to seed (i.e. start) the process. The upshot of this is that we can get predictable behavior out of a random number generator for testing by using a known seed that we use as input as here in this program. Then when we move it to actual use, we can use a different seed to give more random behavior - typically by using the system clock or other input that will be different from one execution to the next as our seed value instead of prompting for it.To code this, we don't want to write our own pseudorandom generator. Not only would that be a fairly complicated thing to do with the Java knowledge we have currently, there are already psuedorandom generators built into the Java library for our use. For this project you will need to use the generator implemented in the Java Random class. You will need to create a new Random object and then draw numbers from it using the nextInt method of the Random class.The Random object's instance method nextInt will provide a random number between 0 and an upper bound (not including the upper bound) for example, the code below will provide an integer value for the variable x between 0 and 9 and a value for y between 1 and 10:int seed = 1024; // For your project, use a value entered by the user as your seed.Random rnd = new Random(seed);int x = rnd.nextInt(10); // x will be an integer between 0 and 9int y = rnd.nextInt(10) + 1; // y will be an integer between 1 and 10How would you modify the code above so that Random uses the seed provided by the user and x will be assigned a value between 1 and 20? That's what you'll need to do for this project.Note that you only ever want to create a single Random object in your code, even if you are generating multiple random numbers! Just make multiple calls to nextInt to get different random numbers, as the code snippet above does.Displaying percentages: To display the percentage of answers correct you need to convert your integer count of the number of correct answers to a double percentage value. The following piece of Java code will display the decimal value of the fraction 1/4. Think about how you would modify this code to get the percentage of correct answers as required by this assignment:int numerator = 1;double denominator = 4.0;double quotient = numerator/denominator;System.out.println(quotient); // will display a value of 0.25
Question
For this project you will write a Java program that will run a simple math quiz. Your program will generate two random integers between 1 and 20 and then ask a series of math questions. Each question will be evaluated as to whether it is the right or wrong answer. In the end a final score should be reported for the user. (See below for how to generate random numbers).Sample Ouptut This is a sample transcript of what your program should do. Values in the transcript in BOLD show the user inputs. So in this transcript the user inputs 33, Jeremy, 24, -16, and 80 the rest is output from the program.Enter a random number seed: 33Enter your name: JeremyHello Jeremy!Please answer the following questions:4 + 20 = 24Correct!4 - 20 = -16Correct!4 * 20 = 80Correct!You got 3 correct answers!That's 100.0%!Your code will behave differently based on the random number seed you use and the answers provided by the user. Here is a second possible execution of this code. As before, values in BOLD are provided by the user - in this case 54, Bob, 8, 8, and 8 - the rest is the output of the program when you run it.Enter a random number seed: 54Enter your name: BobHello Bob!Please answer the following questions:20 + 12 = 8Wrong!The correct answer is: 3220 - 12 = 8Correct!20 * 12 = 8Wrong!The correct answer is: 240You got 1 correct answers!That's 33.33333333333333%!Random numbers: Random numbers in a computer are rarely random. Instead computers use something known as a pseudorandom number generator. This is a process that gives the appearance of generating a random number sequence, but in fact is entirely predictable if you know the value used to seed (i.e. start) the process. The upshot of this is that we can get predictable behavior out of a random number generator for testing by using a known seed that we use as input as here in this program. Then when we move it to actual use, we can use a different seed to give more random behavior - typically by using the system clock or other input that will be different from one execution to the next as our seed value instead of prompting for it.To code this, we don't want to write our own pseudorandom generator. Not only would that be a fairly complicated thing to do with the Java knowledge we have currently, there are already psuedorandom generators built into the Java library for our use. For this project you will need to use the generator implemented in the Java Random class. You will need to create a new Random object and then draw numbers from it using the nextInt method of the Random class.The Random object's instance method nextInt will provide a random number between 0 and an upper bound (not including the upper bound) for example, the code below will provide an integer value for the variable x between 0 and 9 and a value for y between 1 and 10:int seed = 1024; // For your project, use a value entered by the user as your seed.Random rnd = new Random(seed);int x = rnd.nextInt(10); // x will be an integer between 0 and 9int y = rnd.nextInt(10) + 1; // y will be an integer between 1 and 10How would you modify the code above so that Random uses the seed provided by the user and x will be assigned a value between 1 and 20? That's what you'll need to do for this project.Note that you only ever want to create a single Random object in your code, even if you are generating multiple random numbers! Just make multiple calls to nextInt to get different random numbers, as the code snippet above does.Displaying percentages: To display the percentage of answers correct you need to convert your integer count of the number of correct answers to a double percentage value. The following piece of Java code will display the decimal value of the fraction 1/4. Think about how you would modify this code to get the percentage of correct answers as required by this assignment:int numerator = 1;double denominator = 4.0;double quotient = numerator/denominator;System.out.println(quotient); // will display a value of 0.25
Solution
Sure, here is a step-by-step guide on how to write a Java program for a simple math quiz:
- Import the necessary Java libraries:
import java.util.Scanner;
import java.util.Random;
- Initialize the main function:
public static void main(String[] args) {
- Create a Scanner object to read the user's input:
Scanner scanner = new Scanner(System.in);
- Ask the user for a random number seed and their name:
System.out.println("Enter a random number seed: ");
int seed = scanner.nextInt();
System.out.println("Enter your name: ");
String name = scanner.next();
- Create a Random object with the user's seed:
Random rnd = new Random(seed);
- Generate two random numbers between 1 and 20:
int x = rnd.nextInt(20) + 1;
int y = rnd.nextInt(20) + 1;
- Initialize a counter for the correct answers:
int correctAnswers = 0;
- Ask the user the math questions and check their answers:
System.out.println("Please answer the following questions:");
System.out.println(x + " + " + y + " = ");
int answer = scanner.nextInt();
if(answer == x + y) {
System.out.println("Correct!");
correctAnswers++;
} else {
System.out.println("Wrong! The correct answer is: " + (x + y));
}
// Repeat this for subtraction and multiplication
- Calculate and display the final score:
double score = (double) correctAnswers / 3 * 100;
System.out.println("You got " + correctAnswers + " correct answers!");
System.out.println("That's " + score + "%!");
- Close the main function and the class.
Remember to handle exceptions and edge cases as necessary. This is a basic implementation and can be improved according to your needs.
Similar Questions
You are tasked with creating a Java program that simulates a simple quiz game. The program should prompt the user with a series of questions and allow them to enter their answers. After the user has answered all the questions, the program should compute and display the final score based on the number of correct answers.For this assignment, write a Java program that implements the functionality described in the scenario. Ensure that your program is error-free, compiles successfully, and produces the expected output. Test your program with different inputs to verify its correctness.Make sure the following requirements are met:The program should include five multiple-choice questions with four options.The four options should be labeled A, B, C, and D.The program should prompt the user to enter their answer by typing the corresponding letter (A, B, C, or D).After the user has entered their answer for each question, the program should compare it to the correct answer and keep track of the number of correct responses.The program should compute and display the final score as a percentage of the total number of questions.Use if and switch case statements to handle user input and compare it to the correct answers.Include comments to explain the purpose of each section of code and enhance code readability.
In preparation for the lab, carefully review the code below and answer these questions.What does this program do?What is the program output if the user enters 10000 when prompted for the number of points?How would your answer to the above question change if the test in line 15 used <= rather than <?Print the homework or copy and paste the code below in your homework. Draw a box around each statement, and underline each expression, in the code. (Even though technically an assignment in Java is an expression, do not underline entire assignments.)The Random component provides a pseudo-random number generator that generates numbers uniformly distributed in the [0.0,1.0) interval; the method call rnd.nextDouble() returns a pseudo-random number in the [0.0,1.0) interval. (In case you're not familiar with the notation here, [0.0,1.0) denotes an interval consisting of all real numbers between 0.0 inclusive and 1.0 exclusive, i.e., the set of all values x satisfying 0.0 ≤ x < 1.0.)12345678910111213141516171819202122232425public static void main(String[] args) { SimpleReader input = new SimpleReader1L(); SimpleWriter output = new SimpleWriter1L(); output.print("Number of points: "); int n = input.nextInteger(); int ptsInInterval = 0, ptsInSubinterval = 0; Random rnd = new Random1L(); while (ptsInInterval < n) { double x = rnd.nextDouble(); ptsInInterval++; if (x < 0.5) { ptsInSubinterval++; } } double estimate = (100.0 * ptsInSubinterval) / ptsInInterval; output.println("Estimate of percentage: " + estimate + "%"); input.close(); output.close();}
Write a Java program that reads an unspecified number of scores anddetermines how many scores are above or equal to the average, and how many scoresare below the average. Enter a negative number to signify the end of the input. Assumethe maximum number of scores is 100.
Enter the number of questions to answer. Ensure that the input is a positive integer. Continueprompting users with “The number of questions cannot be zero or negative. Re-enter: ” and acceptinput from users until a positive integer is provided.2. Utilize the code from Task A to generate questions involving addition (+), subtraction (-), multipli-cation (*), division (/), and remainder (%), with operands restricted to single-digit integers.3. Calculate and print the correctness percentage.4. If the percentage is 90 or higher, print ’A’; if it’s 80 or higher, print ’B’; if it’s 70 or higher, print ’C’;if it’s 60 or higher, print ’D’; otherwise, print ’F’.
For this assignment you will write the first part of a program that will play a simple "Guess the Number" game. In the full version of this game (which you will write for this week's project) the program will randomly generate an integer between 1 and 200 inclusive and then will repeatedly ask the user for a guess. If they guess a number that is less than 1 or more than 200 an error message will be printed as a part of this loop. For this lab you will write the piece of the code that checks for this error and ends if the user picks the right number.Sample Output This is a sample transcript of what your program should do. Items in bold are user input and should not be put on the screen by your program. Note that the code for this lab includes a "debugging" output that starts with the word "DEBUG: " that tells you the number that was randomly chosen. In the full version of this program that will be removed, but for this incremental piece your lab submission should include it. (You should get used to having this kind of debugging output in your code that isn't part of the final program but is crucial to ensuring that each incremental piece is working properly before you move onto the next part of the program).If the user enters an invalid choice, your code should inform them that their choice was invalid and ask them to guess again.Enter a random seed: 99DEBUG: The number picked is: 188Enter a guess between 1 and 200: 259Your guess is out of range. Pick a number between 1 and 200.That is not the number.Enter a guess between 1 and 200: -1Your guess is out of range. Pick a number between 1 and 200.That is not the number.Enter a guess between 1 and 200: 88That is not the number.Enter a guess between 1 and 200: 188Congratulations! Your guess was correct!I had chosen 188 as the target number.You guessed it in 4 tries.Random numbers: Just like in the FunWithBranching programming assignment, you must use the Random class to generate numbers between 1 and 200. Make sure you are using int values and not doubles for this assignment! Look back at your submitted code for that project and reuse what you can here - reusing code from old assignments isn't only allowed, it's ENCOURAGED! If you've solved a problem once you should remind yourself how you solved it when asked to do something similar!
Upgrade your grade with Knowee
Get personalized homework help. Review tough concepts in more detail, or go deeper into your topic by exploring other relevant questions.