In previous chapters, you developed classes that hold rentalcontract information for Sammy's Seashore Supplies. Now modify theRental and RentalDemo classes as follows:
Save the filesas Rental.java and RentalDemo.java.
Rental.java
class Rental{ public static final int MINUTES_IN_HOUR = 60; public static final int HOUR_RATE = 40; public static final int CONTRACT_NUM_LENGTH = 4; private String contractNumber; private int hours; private int extraMinutes; private double price; private String contactPhone; public Rental(String num, int minutes) { setContractNumber(num); setHoursAndMinutes(minutes); } public Rental() { this("A000", 0); } public void setContractNumber(String num) { boolean numOk = true; if(num.length() != CONTRACT_NUM_LENGTH|| !Character.isLetter(num.charAt(0))|| !Character.isDigit(num.charAt(1))|| !Character.isDigit(num.charAt(2))|| !Character.isDigit(num.charAt(3))) contractNumber = "A000"; else contractNumber =num.toUpperCase(); } public void setHoursAndMinutes(int minutes) { hours = minutes / MINUTES_IN_HOUR; extraMinutes = minutes %MINUTES_IN_HOUR; if(extraMinutes <= HOUR_RATE) price = hours * HOUR_RATE +extraMinutes; else price = hours * HOUR_RATE +HOUR_RATE; } public String getContractNumber() { return contractNumber; } public int getHours() { return hours; } public int getExtraMinutes() { return extraMinutes; } public double getPrice() { return price; } public String getContactPhone() { String phone; phone = "(" + contactPhone.substring(0, 3) +") " + contactPhone.substring(3, 6) +"-" + contactPhone.substring(6,10); return phone; } public void setContactPhone(String phone) { final int VALID_LEN = 10; final String INVALID_PHONE ="0000000000"; contactPhone = ""; int len = phone.length(); for(int x = 0; x < len; ++x) { if(Character.isDigit(phone.charAt(x))) contactPhone +=phone.charAt(x); } if(contactPhone.length() != VALID_LEN) contactPhone =INVALID_PHONE; }}
/////////////////////////////////////////////////////////////////////////////////////////
RentalDemo.java
import java.util.Scanner;public class RentalDemo{ public static void main(String[] args) { String contractNum; int minutes; contractNum = getContractNumber(); minutes = getMinutes(); Rental r1 = new Rental(contractNum,minutes); r1.setContactPhone(getPhone()); contractNum = getContractNumber(); minutes = getMinutes(); Rental r2 = new Rental(contractNum,minutes); r2.setContactPhone(getPhone()); contractNum = getContractNumber(); minutes = getMinutes(); Rental r3 = new Rental(contractNum,minutes); r3.setContactPhone(getPhone()); displayMotto(); displayDetails(r1); displayDetails(r2); displayDetails(r3); System.out.println("Of Contract #" +r1.getContractNumber() + " with a time of " + r1.getHours() + " hours and " +r1.getExtraMinutes() + " minutes,\n and Contract #" + r2.getContractNumber() + " with atime of " + r2.getHours() + " hours and " + r2.getExtraMinutes() + "minutes,\n the one with the longer time is Contract #"+ getLongerRental(r1,r2).getContractNumber()); System.out.println("Of Contract #" +r1.getContractNumber() + " with a time of " + r1.getHours() + " hours and " +r1.getExtraMinutes() + " minutes,\n and Contract #" + r3.getContractNumber() + " with atime of " + r3.getHours() + " hours and " + r3.getExtraMinutes() + "minutes,\n the one with the longer time is Contract #"+ getLongerRental(r1,r3).getContractNumber()); System.out.println("Of Contract #" +r2.getContractNumber() + " with a time of " + r2.getHours() + " hours and " +r2.getExtraMinutes() + " minutes,\n and Contract #" + r3.getContractNumber() + " with atime of " + r3.getHours() + " hours and " + r3.getExtraMinutes() + "minutes,\n the one with the longer time is Contract #"+ getLongerRental(r2,r3).getContractNumber()); int hoursInRental = r1.getHours(); for(int x = 0; x < hoursInRental;++x) System.out.println("Coupon goodfor 10 percent off next rental"); } public static String getContractNumber() { String num; Scanner input = new Scanner(System.in); System.out.print("Enter contract number>> "); num = input.nextLine(); return num; } public static int getMinutes() { int minutes; final int LOW_MIN = 60; final int HIGH_MIN = 7200; Scanner input = new Scanner(System.in); System.out.print("Enter minutes >>"); minutes = input.nextInt(); while(minutes < LOW_MIN || minutes >HIGH_MIN) { System.out.println("Time must bebetween " + LOW_MIN + " minutes and " +HIGH_MIN + " minutes"); System.out.print("Please reenterminutes >> "); minutes = input.nextInt(); } return minutes; } public static void displayDetails(Rental r) { System.out.println("\nContract #" +r.getContractNumber()); System.out.println("For a rental of " +r.getHours() + " hours and " +r.getExtraMinutes() + " minutes,\n at arate of $" + r.HOUR_RATE + " per hour and $1 per minute,\n the price is $" + r.getPrice()); System.out.println("Contact phone number is: "+ r.getContactPhone()); } public static void displayMotto() { System.out.println("SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"); System.out.println("S S"); System.out.println("S Sammy's makes itfun in the sun. S"); System.out.println("S S"); System.out.println("SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"); } public static Rental getLongerRental(Rental r1, Rentalr2) { Rental longer = new Rental(); int minutes1; int minutes2; minutes1 = r1.getHours() *Rental.MINUTES_IN_HOUR + r1.getExtraMinutes(); minutes2 = r2.getHours() *Rental.MINUTES_IN_HOUR + r2.getExtraMinutes(); if(minutes1 >= minutes2) longer = r1; else longer = r2; return longer; } public static String getPhone() { String phone; Scanner input = new Scanner(System.in); System.out.print("Enter contact phone number>> "); phone = input.nextLine(); return phone; } }
In previous chapters, you developed classes that hold rental contract information for Sammy's Seashore Supplies. Now mod
-
- Site Admin
- Posts: 899603
- Joined: Mon Aug 02, 2021 8:13 am