Are there any ways I can make my program more efficient? My program runs, but are there any things that are unneeded that I included?
The local Driver's License Office has asked you to write a program that grades the written portion of the license exam. The exam has 20 multiple choice questions. Here are the correct answers:
1. B 2. D 3. A 4. A 5. C 6. A 7. B 8. A 9. C 10. D 11.B 12. C 13. D 14. A 15. D 16. C 17. C 18. B 19. D 20. A
A student must correctly answer 15 questions of the 20 questions to pass the exam. Write a class named DriverExam that holds the correct answers to the exam in an array field. The class should have an array field to hold the student's answers. The class should have the following methods:
passed: The method returns true if the student passed the exam, false otherwise totalCorrect: returns the total number of correctly answered questions totalIncorrect: returns the total number of incorrectly answered questions questionsMissed: an int array containing the question numbers of the question that the student missed
Demonstrate the class in a test program that asks the user to enter a student's answers, and then display the results returned from the DriverExam class's methods. Input validation: only accept the letters A, B, C, or D as answers
public class DriverExam { //An array containing a student's answers private String[] correctAnswers = {"B", "D", "A", "A", "C", "A", "B", "A", "C", "D", "B", "C", "D", "A", "D", "C", "C", "B", "D", "A"}; //Store the user's answers private String[] userAnswers; int[] missed = new int[correctAnswers.length]; //Process the user's answers public DriverExam (String[] Answers) { userAnswers = new String[Answers.length]; for (int i = 0; i < Answers.length; i++) { userAnswers[i] = Answers[i]; } } //Returns a boolean value if correct answers > 15 public boolean passed() { if (totalCorrect() >= 15) return true; else return false; } //Determines the total correct answers public int totalCorrect() { int correctCount = 0; for (int i = 0; i < correctAnswers.length; i++) { if (userAnswers[i].equalsIgnoreCase(correctAnswers[i])) { correctCount++; } } return correctCount; } //Determines the total incorrect answers public int totalIncorrect() { int incorrectCount = 0; for (int i = 0; i < correctAnswers.length; i++) { if (!userAnswers[i].equalsIgnoreCase(correctAnswers[i])) { missed[incorrectCount] = i; incorrectCount++; } } return incorrectCount; } //Missed questions public int[] questionsMissed() { return missed; } } //end of DriverExam class /* The DriverExamApplication class demonstrates the methods of DriverExam class. */ import java.util.Scanner; public class DriverExamApplication { public static void main(String[] args) { System.out.println(" Driver's License Exam "); Scanner input = new Scanner(System.in); System.out.println(" 20 Multiple-Choice Questions "); System.out.println(" Mark A, B, C, D "); //Inputting string String[] answers = new String[20]; String answer; for (int i = 0; i < 20; i++) { do { System.out.print((i+1) + ": "); answer = input.nextLine(); } while (!isValidAnswer(answer)); answers[i] = answer; } //Process DriverExam exam = new DriverExam(answers); //Results System.out.println(" RESULTS "); //Outputting total correct System.out.println("Total Correct: " + exam.totalCorrect()); //Outputting total incorrect System.out.println("Total Incorrect: " + exam.totalIncorrect()); String passed = exam.passed() ? "YES" : "NO"; //Result pass or fail System.out.println("Passed: " + passed); if (exam.totalIncorrect() > 0) { System.out.println("The incorrect answers are: "); int missedIndex; for (int i = 0; i < exam.totalIncorrect(); i++) { missedIndex = exam.questionsMissed()[i]+1; System.out.print(" " + missedIndex); } } } //end of main function //Returns true when answer is valid public static boolean isValidAnswer (String answer) { return "A".equalsIgnoreCase(answer) || "B".equalsIgnoreCase(answer) || "C".equalsIgnoreCase(answer) || "D".equalsIgnoreCase(answer); } } //end of Test class
A
,B
,C
, andD
? I'm assuming that is different from an incorrect answer, since two different terms are being used here.\$\endgroup\$