Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

The local Driver\'s License Office has asked you to write a program that grades

ID: 3625382 • Letter: T

Question

The local Driver's License Office has asked you to write
a program that grades the written portion of the driver's
license exam. The exam has 20 multiple choice questions.
Here are the correct answers:
1. B 6. A 11. B 16. C
2. D 7. B 12. C 17. C
3. A 8. A 13. D 18. B
4. A 9. C 14. A 19. D
5. C 10. D 15. D 20. A

A student must correctly answer 15 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 also have
an array field that holds the student's answers. The class
should have the following methods:
- passed. Returns true if the student passed the exam, or
false if the student failed
- totalCorrect. Returns the total number of correctly answered
questions
- totalIncorrect. Returns the total numner of incorrectly
answered questions
- questionsMissed. An int array containing the question numbers
of the questions that the student missed

Demonstrate the class in a complete program that asks the user to
enter a student's answers, and then displays the results returned
from the DriverExam class's methods.

Input Validation: Only accept the letters A, B, C, or D as answers.

Explanation / Answer

{

private String[] correctAnswers = {"B","D","A","A","C","A","B","A","C","D", "B","C","D","A", "D","C","C","B","D","A"};

private String[] userAnswers;

int[] missed = new int[correctAnswers.length];

public DriverExam(String[] Answers)

{

userAnswers=new String[Answers.length];

for (int i = 0; i < Answers.length; i++)

{

userAnswers[i]=Answers[i];

}

}

public boolean passed()

{

if(totalCorrect() >= 15)

return true;

else

return false;

}

public int totalCorrect()

{

int correctCount=0;

for (int i = 0; i < correctAnswers.length; i++)

{

if (userAnswers[i].equalsIgnoreCase(correctAnswers[i]))

{

correctCount++;

}

}

return correctCount;

}

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;

}

public int[] questionsMissed()

{

return missed;

}

}

public class DriverExamApplication

{

public static void main(String[] args)

{

System.out.println(" Driver's License Exam ");

Scanner kb = new Scanner(System.in);

System.out.println(" 20 Multiple choice questions Mark A,B,C,D .");

String[] answers = new String[20];

String answer;

for (int i = 0; i < 20; i++)

{

do

{

System.out.print((i + 1) + ": ");

answer = kb.nextLine();

}while (!isValidAnswer(answer));

answers[i] = answer;

}

DriverExam exam = new DriverExam(answers);

System.out.println(" RESULTS ");

System.out.println("Total Correct: " + exam.totalCorrect());

System.out.println("Total Incorrect: " + exam.totalIncorrect());

String passed = exam.passed() ? "YES" : "NO";

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);

}

}

}

public static boolean isValidAnswer(String answer)

{

return "A".equalsIgnoreCase(answer) || "B".equalsIgnoreCase(answer)|| "C".equalsIgnoreCase(answer) || "D".equalsIgnoreCase(answer);

}