The local driver’s license office has asked you to write a program that grades t
ID: 3711289 • 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 Rules and Signals Test. The driver license test has 25 multiple choice questions. The set of answer keys is:
1.A 6.B 11.C 16.B 21.B
2.C 7.C 12.A 17.A 22.C
3.B 8.D 13.B 18.C 23.A
4.B 9.A 14.C 19.A 24.D
5.D 10.B 15.A 20.D 25.B
First, the application displays messages to ask for the information of current candidate about last name, first
name, SS number to create a Test account
When the canidate is ready, display the test instruction, questions and read answers
DRIVER LICENSE TEST
THERE ARE 25 MULTIPLE CHOICE QUESTIONS
YOU HAVE TO GET 20 CORRECT ANSWERS TO GET PASSED
------------------------------------------------
Question 1: _
The users answer the question by typing a letter A, B, C or D for each question.
If users type other keys than A, B, C or D; display message “Invalid key – Retype” and allow users to retype the
answer of current question before moving on
All the answers and the key set should be sent to the Test account in array type to evaluate the result.
The result will be displayed on the screen in the following format, where the date is current date and Driver’s
license number is a combination of two random 4-digit numbers
DRIVER LICENSE TEST RESULT
Driver’s name: Smith, James
SS Number: 112233440
Phone Number: 2141234567
Address: 123 Plano Rd Dallas TX 75243
Driver’s License: 12345678
Test date: 03/15/2018
Result: PASSED
Missed Questions: 5, 12, 15
The program will be available for other candidates to test until users choose to exit
Explanation / Answer
DriveExam.java
public class DriveExam
{
// an array of student's answers.
private final 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 answers
private final String[] userAnswers;
int[] missed = new int [correctAnswers. length];
// Process the user answers
public DriveExam(String[] Answers)
{
userAnswers = new String[Answers.length];
for (int i= 0; i< Answers.length; i++)
{
userAnswers[i] = Answers[i];
}
}
//return boolean value if correct answers > 15
public boolean passed()
{
if(totalCorrect()>= 15)
return true;
else
return false;
}
// total Correct answers
public int totalCorrect()
{
int correctCount=0;
for (int i =0; i < correctAnswers.length;i++)
{
if (userAnswers[i].equalsIgnoreCase(correctAnswers[i]))
{
// missed [correctCount]= i;
correctCount++;
}
}
return correctCount;
}
// total Correct 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[] questionMissed()
{
return missed;
}
}
___________________
ExamApplication.java
import java.util.Scanner;
public class ExamApplication {
public static void main(String[] args) {
System.out.println("Driver's Lincense Exam");
//scanner class object is used to read the inputs entered by the user
Scanner kb=new Scanner(System.in);
System.out.println("20 Multiple choice questions ");
// Creating the array of type String
String [] answers = new String [20];
String answer;
System.out.print("Enter Driver’s name:");
String name=kb.nextLine();
System.out.print("Enter SS Number:");
int ssNum=kb.nextInt();
System.out.print("Enter Phone Number:");
int phoneNum=kb.nextInt();
kb.nextLine();
System.out.print("Enter Address: ");
String address=kb.nextLine();
System.out.print("Enter Driver’s Licence:");
int licence=kb.nextInt();
System.out.print("Enter Test date:");
String testDate=kb.next();
for (int i =0; i <20;i++)
{
do
{
System.out.print((i+1)+":");
answer = kb.nextLine();
}
while (!isValidAnswer(answer));
answers[i]=answer;
}
//Process
DriveExam exam= new DriveExam(answers);
System.out.println(" DRIVER LICENSE TEST RESULT");
System.out.println("Driver’s name:"+name);
System.out.println("SS Number:"+ssNum);
System.out.println("Phone Number:"+phoneNum);
System.out.println("Enter Address: "+address);
System.out.println("Driver’s Licence:"+licence);
System.out.println("Test date:"+testDate);
displayResult(exam);
}
private static void displayResult(DriveExam exam) {
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.questionMissed()[i]+1;
System.out.print(" "+missedIndex);
}
}
}
// return true when the answer is valid
public static boolean isValidAnswer(String answer)
{
return "A".equalsIgnoreCase(answer)|| "B".equalsIgnoreCase(answer)|| "C".equalsIgnoreCase(answer)||"D".equalsIgnoreCase(answer);
}
}
_____________________
Output:
Driver's Lincense Exam
20 Multiple choice questions
Enter Driver’s name:Smith, James
Enter SS Number:112233440
Enter Phone Number:2141234567
Enter Address: 123 Plano Rd Dallas TX 75243
Enter Driver’s Licence:12345678
Enter Test date: 03/15/2018
1: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:C
16:B
17:A
18:B
19:D
20:C
DRIVER LICENSE TEST RESULT
Driver’s name:Smith, James
SS Number:112233440
Phone Number:2141234567
Enter Address: 123 Plano Rd Dallas TX 75243
Driver’s Licence:12345678
Test date:03/15/2018
Passed :Yes
The incorrect answers are
15 16 17 20
________________Thank You
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.