Answer:
Here is the corrected code: The screenshot of the program along with its output is attached. The comments are written with each line of the program for better understanding of the code.
CarRental.java
public class CarRental { //class name
//below are the data members name, zipcode, size, dFee, days and total
String name;
int zipcode;
String size;
double dFee;
int days;
double total;
public String getName() { //accessor method to get the name
return name;
}
public int getZipcode() {
//accessor method to get the zipcode
return zipcode;
}
public String getSize()
{ //accessor method to get the size
return size;
}
public int getDays()
{ //accessor method to get the days
return days; }
public CarRental(String size) { //constructor of CarRental class
if(size.charAt(0)=='e') // checks if the first element (at 0th index) of size data member is e
dFee = 29.99; // sets the dFee to 29.99
else if(size.charAt(0)=='m') // checks if the first element (at 0th index) of size data member is m
dFee = 38.99; // sets the dFee to 38.99
else // checks if the first element (at 0th index) of size data member is f
dFee =43.50; // sets the dFee to 43.50
}
public void calculateTotal(int days)
{ //method calculateTotal of CarRental
total = dFee*days; } //computes the rental fee
public void print()
{ //method to display the total rental fee
System.out.println("Your rental total cost is: $" + total); } }
Explanation:
LuxuryCarRental.java
import java.util.*;
public class LuxuryCarRental extends CarRental
{ //class LuxuryCarRental that is derived from class CarRental
public LuxuryCarRental(String size, int days)
{ // constructor of LuxuryCarRental
super(size);} //used when a LuxuryCarRental class and CarRental class has same data members i.e. size
public void calculateTotal()
{ //overridden method
super.calculateTotal(days);
// used because CarRental and LuxuryCarRental class have same named method i.e. calculateTotal
dFee = 79.99; //sets the rental fee at $79.99 per day
total = dFee; } //sets total to rental fee value
public void print(){ //overridden method
int chauffeur; // to decide to include chauffeur
Scanner keyboard = new Scanner(System.in); //used to take input from user
System.out.println("Do you want to add a chauffeur for $200? Enter 0 for"
+ " yes and 1 for no"); // prompts the user to respond to the option of including a chauffeur at $200 more per day
chauffeur = keyboard.nextInt(); //reads the input option of chauffeur from user
if(chauffeur==1) //if user enters 1 which means user does not want to add a chauffeur
total = dFee; //then set the value of dFee i.e. $79.99 to total
else //if user enters 0 which means user wants to add a chauffeur
total = dFee + 200; //adds 200 to dFee value and assign the resultant value to total variable
System.out.println("Your rental total cost is: $" + total); } } //display the total rental fee
UseCarRental.java
import java.util.*;
public class UseCarRental{ //class name
public static void main(String[] args){ //start of main() function body
String name, size; // declare variables
int zipcode, days; //declare variables
Scanner keyboard = new Scanner(System.in); // to take input from user
System.out.println("Enter total days you plan on renting: "); //prompts user to enter total days of rent
days = keyboard.nextInt(); // reads value of days from user
System.out.println("Enter your name: "); //prompts user to enter name
name = keyboard.next(); //reads input name from user
System.out.println("Enter your billing zipcode: "); // prompts user to enter zipcode
zipcode = keyboard.nextInt(); //reads input zipcode from user
System.out.println("Enter the size of the car: "); // prompts user to enter the value of size
size = keyboard.next(); //reads input size from user
CarRental economy = new CarRental(size); //creates an object i.e. economy of class CarRental
economy.calculateTotal(days); //calls calculateTotal method of CarRental using instance economy
economy.print(); //calls print() method of CarRental using instance economy
LuxuryCarRental fullsize = new LuxuryCarRental(size, days); //creates an object i.e. fullsize of class LuxuryCarRental
fullsize.calculateTotal(); //calls calculateTotal method of LuxuryCarRental using instance fullsize
fullsize.print(); }} //calls print() method of LuxuryCarRental using instance fullsize