Question: Hello, I'm on Chapter 6, 39E of Java: How to Program Early Objects. Within the problem when a user inputs 5 I want the selection
Hello,
I'm on Chapter 6, 39E of Java: How to Program Early Objects. Within the problem when a user inputs "5" I want the selection to provide a mixture of addition, multiplication, subtraction, and division. What is the best way to go abut this? Here is my code thus far:
import java.security.SecureRandom; import java.util.Scanner; public class Project4 { private static int level; private static int currentLevel; private static Scanner scanner = new Scanner(System.in); private static SecureRandom random = new SecureRandom(); public static void main(String[] args) { level = 1; currentLevel = level; while(true) { int choice = menu(); boolean success = generateProblem(currentLevel, choice); if (success) { level++; currentLevel = level; } else { System.out.println("Next Student, Please"); } } } public static int menu() { int choice = -1; do { System.out.println("Welcome to Math Learning!"); System.out.println("1. - Addition"); System.out.println("2. - Subtraction"); System.out.println("3. - Multiplication"); System.out.println("4. - Division"); System.out.println("5. - Random Mixture"); System.out.println("6. - Exit"); System.out.print("Enter [1,2,3,4,5, or 6] to make your selection: "); choice = scanner.nextInt(); if (choice < 1 || choice > 6) System.out.println("Pick again please! You did not make a valid selection!"); if (choice == 6) { System.out.println("Thank You, See you soon!"); System.exit(0); } }while (choice < 1 || choice > 5) ; return choice; } public static boolean generateProblem(int level, int choice) { int correct = 0; int questionNumber = 1; double tries = 10; double percentage = 0; double userAnswer; boolean success = false; String goodJob[] = {"Good Job!", "Doing Great!", "Keep it up!", "Top Notch!"}; String badJob[] = {"Try again!", "Wrong!", "You can do better!", "Nope!"}; int minimum = (int) Math.pow(10, level - 1); int maximum = (int) (Math.pow(10, level) - 1); int number1 = random.nextInt(maximum - minimum + 1) + minimum; int number2 = random.nextInt(maximum - minimum + 1) + minimum; int number3 = random.nextInt(maximum - minimum + 1) + minimum; int number4 = random.nextInt(maximum - minimum + 1) + minimum; int number5 = random.nextInt(maximum - minimum + 1) + minimum; System.out.println("Level - " + level); while (questionNumber <= tries) { success = false; switch (choice) { case 1: System.out.print(number1 + " + " + number2 + "="); userAnswer = scanner.nextInt(); if (userAnswer == (number1 + number2)) success = true; break; case 2: System.out.print(number1 + " - " + number2 + " = "); userAnswer = scanner.nextInt(); if (userAnswer == (number1 - number2)) success = true; break; case 3: System.out.print(number1 + " * " + number2 + " = "); userAnswer = scanner.nextInt(); if (userAnswer == (number1 * number2)) success = true; break; case 4: System.out.print(number1 + " / " + number2 + " = "); userAnswer = scanner.nextInt(); if (userAnswer == (number1 / number2)) success = true; break; case 5: String randomQuestion = new String(); randomQuestion += number1 + " + " + number2 + " * " + number3 + " / " + number4 + " - " + number5; System.out.println(randomQuestion); double randomAnswer = scanner.nextDouble(); double result = (number1 * number2) - ((number3 + number4) / 1.0); if (Math.abs(randomAnswer - result) < 0.01) success = true; else success = false; break; } if (success) { System.out.println(goodJob[random.nextInt(goodJob.length)]); questionNumber++; correct++; number1 = random.nextInt(maximum - minimum + 1) + minimum; number2 = random.nextInt(maximum - minimum + 1) + minimum; } else { System.out.println(badJob[random.nextInt(badJob.length)]); questionNumber++; } } percentage = (correct / tries) * 100.00; if (percentage >= 75) { System.out.println("GREAT JOB! YOU SCORED 75% or HIGHER! YOU ADVANCE TO YOUR NEXT SELECTION!"); success = true; } else { System.out.println("SORRY! You need to practice up on your mathematics!"); success = false; } return success; } private static double randomNumbers(int number1, int number2, int number3, int number4, int number5) { int multiplication = multiplicationProblem(number1, number2); int div = (int) divisionProblem(multiplication, number4); int sum = additionProblem(number1, div); int sub = subtractionProblem(sum, number5); return sub; } private static double divisionProblem(int number1, int number2) { return (double) (number1 / number2); } private static int subtractionProblem(int number1, int number2) { return number1 - number2; } private static int additionProblem(int number1, int number2) { return number1 + number2; } private static int multiplicationProblem(int number1, int number2) { return number1 * number2; } } Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
