I need my program to print out the fine amount if there is a fine and \"no ticke
ID: 3621483 • Letter: I
Question
I need my program to print out the fine amount if there is a fine and "no ticket" if there is no fine. I have it set up already in a loop in the parking ticket class but I cant figure out why it is not printing it out. But the program prints out everything else that I need it to print out.
Starting out with java: from control structures through objects
Programming challenge 8 Chapter 9
DEMO CLASS:
import java.util.Scanner;
public class Demo
{
public static void main(String[] args)
{
String umake;//holds make of parked car
String umodel;//holds model of parked car
String ucolor;// holds color of parked car
String uname;// holds officer name
String ulicenseNumber;//holds car license plate number
String ubadgeNumber;//holds officers badge number
int utimeParked;//holds time that car has been parked
int utimePurchased;//hold time purchased at parking meter
int difference;
Scanner keyboard = new Scanner(System.in);
//get officer's name
System.out.print("Enter Officer: ");
uname = keyboard.nextLine();
//get officer's badge number
System.out.print("Enter Badge Number: ");
ubadgeNumber = keyboard.nextLine();
//get car's color
System.out.print("Enter Color: ");
ucolor = keyboard.nextLine();
//get car's make
System.out.print("Enter Make: ");
umake = keyboard.nextLine();
//get car's model
System.out.print("Enter Model: ");
umodel = keyboard.nextLine();
//get cars license plate number
System.out.print("Enter License Number: ");
ulicenseNumber = keyboard.nextLine();
//get time parked
System.out.print("Enter Minutes Parked: ");
utimeParked = keyboard.nextInt();
//get time purchased
System.out.print("Enter Minutes Purchased: ");
utimePurchased = keyboard.nextInt();
System.out.print(" ");
//create parked car object
parkedCar carTest = new parkedCar(umake, umodel, ucolor, ulicenseNumber, utimeParked);
//create parking meter object
parkingMeter meterTest = new parkingMeter (utimePurchased);
//create police officer object
policeOfficer officerTest = new policeOfficer (uname, ubadgeNumber);
//create parking ticket object
parkingTicket ticketTest = new parkingTicket(carTest, officerTest);
System.out.println(ticketTest);
System.out.println(meterTest);
}
}
PARKED CAR CLASS:
public class parkedCar
{
private String make;
private String model;
private String color;
private String licenseNumber;
private int minutesParked;
/**
*This constructor initializes the make, model, color, licenseNumber, and minutes fields.
*@param mk The parked car's make.
*@param mod The parked car's model.
*@param col The parked car's color.
*@param ln The parked car's license plate number.
*@param mp The number of minutes that the car has been parked.
*/
public parkedCar(String mk, String mod, String col, String ln, int mp)
{
make = mk;
model = mod;
color = col;
licenseNumber = ln;
minutesParked = mp;
}
/**
* cunstructor for parked car
* @param c
*/
public parkedCar(parkedCar c)
{
make = c.make;
model = c.model;
color = c.color;
licenseNumber = c.licenseNumber;
minutesParked = c.minutesParked;
}
public void set(String mk, String mod, String col, String ln, int mp)
{
make = mk;
model = mod;
color = col;
licenseNumber = ln;
minutesParked = mp;
}
/**
* getMake method
* @return getMake returns the car's make
*/
public String getMake()
{
return make;
}
/**
* getModel method
* @return getModel returns the car's model
*/
public String getModel()
{
return model;
}
/**
* getColor method
* @return getColor returns the car's color
*/
public String getColor()
{
return color;
}
/**
* getlicenseNumber
* @return getlicenseNumber returns the car's
* license plate number
*/
public String getlicenseNumber()
{
return licenseNumber;
}
/**
* getMinuteParked method
* @return getMinutesParked returns the amount
* of time the car has been parked
*/
public int getMinutesParked()
{
return minutesParked;
}
/**
* toString method
* @return toString returns the parked car info
*/
public String toString()
{
String str = "Make: " + make
+ " Model: " + model
+ " Vehicle Color: " + color
+ " License Number: " + licenseNumber
+ " Total Minutes Parked: " + minutesParked ;
return str;
}
}
PARKING TICKET CLASS:
class parkingTicket
{
private parkedCar car;
private policeOfficer cop;
/**
* contructor initializes parked car and policeOfficer
* @param c parked car
* @param cp police Officer
*/
public void calculateFine(int utimeParked, int utimePurchased, int difference)
{
difference = utimeParked - utimePurchased;
if (difference <= 0)
System.out.println("No ticket! ");
else if (difference > 0 && difference <= 60)
System.out.println(" Fine: $35 ");
else if(difference > 60 && difference <= 120)
System.out.println("Fine: $45 ");
else if(difference > 120 && difference <= 180)
System.out.println("Fine: $55 ");
else if(difference > 180 && difference <= 240)
System.out.println("Fine: $65 ");
else if(difference > 240 && difference <= 300)
System.out.println("Fine: $75 ");
else if(difference > 300 && difference <= 360)
System.out.println("Fine: $85 ");
else if(difference > 360 && difference <= 420)
System.out.println("Fine: $95 ");
else if(difference > 420 && difference <= 480)
System.out.println("Fine: $105 ");
}
public parkingTicket(parkedCar c, policeOfficer cp)
{
car = new parkedCar(c);
cop = new policeOfficer(cp);
}
/**
* getParkedCar method
* @return car info
*/
public parkedCar getParkedCar()
{
return new parkedCar(car);
}
/**
* getpoliceOfficer method
* @return police info
*/
public policeOfficer getpoliceOfficer()
{
return new policeOfficer(cop);
}
/**
* toString method
* @return String of car info and police info
*/
public String toString()
{
String str = "Car Information: " + car
+ " Reporting Officer Information: " + cop;
return str;
}
}
PARKING METER CLASS
public class parkingMeter
{
private int minutesPurchased;
// private int minutesIllegallyParked;
/**
* constructor initializes minutes purchased
* @param mp minutes purchased
*/
public parkingMeter(int mp)
{
minutesPurchased = mp;
}
/**
* set method
* @param sets the number of minutes purchased
*/
public void set(int mp)
{
minutesPurchased = mp;
}
/**
* getMinutesPurchased method
* @return the number of minutes purchased
*/
public double getMinutesPurchased()
{
return minutesPurchased;
}
/**
* toString method
* @return String of minutes purchased
*/
public String toString()
{
String str = "Total Minutes purchased: " + minutesPurchased;
return str;
}
}
POLICE OFFICER CLASS
public class policeOfficer
{
private String officerName;
private String badgeNumber;
/**
* constructor initializes police officer name and badge number
* @param on officer name
* @param bn badge number
*/
public policeOfficer (String on, String bn)
{
officerName = on;
badgeNumber = bn;
}
public policeOfficer (policeOfficer cp)
{
officerName = cp.getOfficerName();
badgeNumber = cp.getBadgeNumber();
}
/**
* setOfficerName method
* @param on sets officer's name
*/
public void setOfficerName (String on)
{
officerName = on;
}
/**
* setBadgeNumber method
* @param bn sets badge number
*/
public void setBadgeNumber(String bn)
{
badgeNumber = bn;
}
/**
* getOfficerName method
* @return officer's name
*/
public String getOfficerName ()
{
return officerName;
}
/**
* getBadgeNumber method
* @return badge number of officer
*/
public String getBadgeNumber()
{
return badgeNumber;
}
/**
* toString method
* @return String of officer's name and badge number
*/
public String toString()
{
String str = "Officer Name: " + officerName
+ " Badge Number: " + badgeNumber;
return str;
}
}
Explanation / Answer
Dear,
Every thing is fine need to just include a statement in main method and modify the function Calculate fine as below
Here is the main class
public class Demo
{
public static void main(String[] args)
{
String umake;//holds make of parked car
String umodel;//holds model of parked car
String ucolor;// holds color of parked car
String uname;// holds officer name
String ulicenseNumber;//holds car license plate number
String ubadgeNumber;//holds officers badge number
int utimeParked;//holds time that car has been parked
int utimePurchased;//hold time purchased at parking meter
int difference;
Scanner keyboard = new Scanner(System.in);
//get officer's name
System.out.print("Enter Officer: ");
uname = keyboard.nextLine();
//get officer's badge number
System.out.print("Enter Badge Number: ");
ubadgeNumber = keyboard.nextLine();
//get car's color
System.out.print("Enter Color: ");
ucolor = keyboard.nextLine();
//get car's make
System.out.print("Enter Make: ");
umake = keyboard.nextLine();
//get car's model
System.out.print("Enter Model: ");
umodel = keyboard.nextLine();
//get cars license plate number
System.out.print("Enter License Number: ");
ulicenseNumber = keyboard.nextLine();
//get time parked
System.out.print("Enter Minutes Parked: ");
utimeParked = keyboard.nextInt();
//get time purchased
System.out.print("Enter Minutes Purchased: ");
utimePurchased = keyboard.nextInt();
System.out.print(" ");
//create parked car object
parkedCar carTest = new parkedCar(umake, umodel, ucolor, ulicenseNumber, utimeParked);
//create parking meter object
parkingMeter meterTest = new parkingMeter (utimePurchased);
//create police officer object
policeOfficer officerTest = new policeOfficer (uname, ubadgeNumber);
//create parking ticket object
parkingTicket ticketTest = new parkingTicket(carTest, officerTest);
ticketTest. calculateFine(utimeParked,utimePurchased);
System.out.println(ticketTest);
System.out.println(meterTest);
}
}
Instead of using else if logic we can directly calculate for any number of hours
public void calculateFine(int utimeParked, int utimePurchased)
{
int fine;
int difference = utimeParked - utimePurchased;
if (difference <= 0)
System.out.println("No ticket! ");
else
{
fine=25;
if(difference>=60)
{
fine=fine+((difference/60)*10);
}
System.out.println("Fine: $"+fine);
}
}
Hope this will help you a lot..