+1 (315) 557-6473 

Electric Bill with Java Assignment Solution


Calculate the Electric Bill

Program #4

For this assignment, you will create a Java program that will calculate a business customer’s amount due for their electric bill. The program will begin by asking the business customer for their account number (a ten-digit value). Next, it will ask if the bill is late. Then, the program will ask the business customer how many properties they own. Finally, it will ask the business customer to enter the number of kilowatt-hours (kWh) used at each property. The amount due depends on whether the bill is late and the total number of kWh used.

The cost of electricity is $0.050445 per kWh. Late bills incur a late fee, which is equal to 15% of the amount due.

The program will use the information above to compute the business customer’s amount due. After calculating the amount due, for a bill paid on time, the program will print the business customer’s account number, total number of kWh used and amount due onto the screen. For a late bill, the program will print the business customer’s account number, total number of kWh used, amount due, late fee and total due onto the screen. Each item printed will be displayed on a separate line with an appropriate label and symbols. Example output is shown below (note: the output shown below is an example, your values will be different depending on the data input – your labels and symbols should match those shown below). All dollar values will be displayed to two decimal places, as shown below. After printing the billing information, 2 lines containing 45 asterisks per line will be printed (you must use a nested for loop to complete the java assignment).

You must make use of both variables and constants in your program. Be sure to name your constants and variables appropriately.

This program should make use of both if statements and a loop.

This program will make use of 6 methods. The first method will be used to ask for the business

customer’s account number. The second method will be used to ask if the bill is late. The third method will be used to ask for the number of properties and perform a cumulative sum, based on the number of kWh used at each property. The fourth method will be used to calculate the amount due. The fifth method will be used to print the billing information, as described above. The sixth method will be used to print the lines of asterisks onto the screen. Several of these methods will make use of parameters. At least 3 of these methods will return a value.

Your output should appear exactly as shown below. User input is in red.

Sample Run #1:

Welcome to the Electricity Billing Program!

Please enter your account number: 0123456789 Is your bill late

(enter true or false)? false

Please enter the number of properties that you own: 4 ]

Please enter the number of kWh used at property #1: 500

Please enter the number of kWh used at property #2: 1250

Please enter the number of kWh used at property #3: 3000

Please enter the number of kWh used at property #4: 4500

Account Number: 0123456789

Total Number of kWh Used = 9250

Amount Due = $466.62

Sample Run #2:

Welcome to the Electricity Billing Program!

Please enter your account number: 9876543210 Is your bill late

(enter true or false)? true

Please enter the number of properties that you own: 3

Please enter the number of kWh used at property #1: 3500

Please enter the number of kWh used at property #2: 1325

Please enter the number of kWh used at property #3: 435

Account Number: 9876543210

Total Number of kWh Used = 5260

Amount Due = $265.34

Late Fee = $39.80

Total Due = $305.14

Solution:

import java.util.Scanner; public class Main { private static final double KWH_COST = 0.050445; private static final double LATE_FEE_RATE = 0.15; private static final int NUM_ASTERISKS = 45; private static Scanner in = new Scanner(System.in); // Read an account number from user input private static String readAccountNumber() { System.out.print("Please enter your account number: "); return in.nextLine(); } // Read a value to check if bill being paid is late private static boolean readBillIfLate() { System.out.print("Is your bill late (enter true or false)? "); return in.nextLine().equalsIgnoreCase("true"); } // Return the total kwh used for all properties private static int readTotalKwhUsed() { System.out.print("Please enter the number of properties that you own: "); int numProperties = Integer.parseInt(in.nextLine()); // Ask for the kwh usage for each property int totalKwh = 0; for (int i = 0; i < numProperties; i++) { System.out.print("Please enter the number of kWh used at property #" + (i + 1) + ": "); totalKwh += Integer.parseInt(in.nextLine()); } return totalKwh; } // calculate the total amount due based on the kwh used private static double calculateAmountDue(int totalKwhUsed) { return totalKwhUsed * KWH_COST; } // Print the billing information private static void printBillingInformation(String accountNumber, int totalKwhUsed, boolean isLate) { double amountDue = calculateAmountDue(totalKwhUsed); System.out.println(); System.out.println("Account Number: " + accountNumber); System.out.println("Total Number of kWh Used = " + totalKwhUsed); System.out.println("Amount Due = $" + String.format("%.2f", amountDue)); if (isLate) { // Apply 15% fee for late double lateFee = LATE_FEE_RATE * amountDue; System.out.println("Late Fee = $" + String.format("%.2f", lateFee)); System.out.println("Total Due = $" + String.format("%.2f", amountDue + lateFee)); } printDividerLine(); printDividerLine(); } // Prints out 45 asterisks private static void printDividerLine() { for(int i = 0; i < NUM_ASTERISKS; i++) { System.out.print("*"); } System.out.println(); } // Entry point of the program public static void main(String[] args) { // Print an intro System.out.println("Welcome to the Electricity Billing Calculator"); System.out.println(); // Ask for the account number String accountNumber = readAccountNumber(); // Ask if bill is late boolean isLate = readBillIfLate(); // Read the total kwh used int totalKwhUsed = readTotalKwhUsed(); // Print the billing information printBillingInformation(accountNumber, totalKwhUsed, isLate); } }