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

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..