Notice: Undefined offset: 14039095 in /var/www/html/qa-external/qa-external-users.php on line 744
write a program using java - OnlineGDB Q&A
Hello, OnlineGDB Q&A section lets you put your programming query to fellow community users. Asking a solution for whole assignment is strictly not allowed. You may ask for help where you are stuck. Try to add as much information as possible so that fellow users can know about your problem statement easily.

write a program using java

+7 votes
asked Oct 27, 2019 by charan
  1. Write a program that computes the cost of a long-distance call. The cost of the call is determined according to the following rate schedule:
    a. Any call started between 8:00 am and 6:00 pm, Monday through Friday, is billed at a rate of $0.40 per minute.

    b. Any call starting before 8:00 am or after 6:00 pm, Monday through Friday, is charged at a rate of $0.25 per minute.
    c. Any call started on a Saturday or Sunday is charged at a rate of $0.15 per minute.
    The input will consist of the day of the week, the time the call started, and the length of the call in minutes. The output will be the cost of the call. The time is to be input in 24-hour notation, so the time 1:30 pm is input as 13:30
    The day of the week will be read as one of the following pairs of character values, which are stored in two variables of type 
    char:
    Mo Tu We Th Fr Sa Su
    Be sure to allow the user to use either uppercase or lowercase letters or a combination of the two. The number of minutes will be input as a value
    of type 
    int. (You can assume that the user rounds the input to a whole number of minutes.) Your program should include a loop that lets the user repeat this calculation until the user says she or he is done.

1 Answer

+2 votes
answered Jan 19, 2025 by 24CSE367 DEBA PRASAD SAHOO (190 points)
import java.util.Scanner;

public class LongDistanceCallCalculator {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean repeat = true;

        while (repeat) {
            System.out.println("Enter the day of the week (Mo, Tu, We, Th, Fr, Sa, Su):");
            String day = scanner.next().trim().toUpperCase();

            System.out.println("Enter the time the call started (HH:MM):");
            String time = scanner.next();
            String[] timeParts = time.split(":");
            int hour = Integer.parseInt(timeParts[0]);

            System.out.println("Enter the length of the call in minutes:");
            int minutes = scanner.nextInt();

            double cost = calculateCost(day, hour, minutes);
            System.out.printf("The cost of the call is: $%.2f%n", cost);

            System.out.println("Do you want to repeat the calculation? (yes/no)");
            String response = scanner.next().trim().toLowerCase();
            repeat = response.equals("yes");
        }

        scanner.close();
    }

    private static double calculateCost(String day, int hour, int minutes) {
        double rate = 0.0;

        if (isWeekday(day) && isBusinessHour(hour)) {
            rate = 0.40;
        } else if (isWeekday(day) && !isBusinessHour(hour)) {
            rate = 0.25;
        } else if (isWeekend(day)) {
            rate = 0.15;
        }

        return rate * minutes;
    }

    private static boolean isWeekday(String day) {
        return day.equals("MO") || day.equals("TU") || day.equals("WE") || day.equals("TH") || day.equals("FR");
    }

    private static boolean isBusinessHour(int hour) {
        return hour >= 8 && hour < 18;
    }

    private static boolean isWeekend(String day) {
        return day.equals("SA") || day.equals("SU");
    }
}
Welcome to OnlineGDB Q&A, where you can ask questions related to programming and OnlineGDB IDE and receive answers from other members of the community.
...