Java: An Introduction to Problem Solving and Programming (8th Edition)
Java: An Introduction to Problem Solving and Programming (8th Edition)
8th Edition
ISBN: 9780134462035
Author: Walter Savitch
Publisher: PEARSON
bartleby

Concept explainers

Expert Solution & Answer
Book Icon
Chapter 9, Problem 5E

Explanation of Solution

Creating “TimeOfDay.java”:

  • Import required packages.
  • Define the “TimeOfDay” class.
    • Declare required variables.
    • Define the constructor and instantiate the variables.
    • Give function definition “setTimeTo ()” to set the time.
      • Declare required variables.
      • Create an object for the “Scanner” class.
      • Split the string using a delimiter “:”.
      • Inside the “try” block,
        • Get the hour and store it in a variable.
      • Catch the exception “Exception”.
        • Throw the exception “InvalidFormattingException” with a message.
      • Check if the hour value is valid.
        • Throw “InvalidHourException” with a message.
      • Get the remaining string and cut off the last two characters.
      • Check if the string’s length is less than 3.
        • Throw “InvalidFormattingException” with a message.
      • Get the minutes and store it in a variable.
      • Get “am” or “pm” and store it in a variable.
      • Inside “try” block,
        • Convert the minute string to integer.
      • Catch the exception “Exception”.
        • Throw “InvalidFormattingException” with a message.
      • Check if minute is less than 0 or greater than 59.
        • Throw “InvalidMinuteException” with a message.
      • Check whether the string is not equal to “am” and “pm”.
        • Throw “InvalidFormattingException” with a message.
      • Check if the string is equal to “am”.
        • Assign “true” to “isAM”.
      • Else,
        • Assign “false” to “isAM”.
    • Function to produce the resultant string.
      • Append all the value to a string.
    • Define the “main ()” method.
      • Create an object for the “Scanner” class.
      • Create an object for the class “TimeOfDay”.
      • Declare a variable “time”.
      • Inside “try” block.
        • Get the time from the user.
        • Call the function “setTimeTo ()” by passing the time.
      • Catch the exception “InvalidFormattingException”.
        • Print the message using “getMessage ()” function.
      • Catch the exception “InvalidHourException”.
        • Print the message using “getMessage ()” function.
      • Catch the exception “InvalidMinuteException”.
        • Print the message using “getMessage ()” function.
      • Print the time.

Creating “InvalidFormattingException.java”:

  • Define a class “InvalidFormattingException” that extends “Exception”.
    • Define a parameterized constructor.
      • Call the parent class’s method using “super ()” by passing the message.

Creating “InvalidHourException.java”:

  • Define a class “InvalidHourException” that extends “InvalidFormattingException”.
    • Define a parameterized constructor.
      • Call the parent class’s method using “super ()” by passing the message.

Creating “InvlaidMinuteException.java”:

  • Define a class “InvalidMinuteException” that extends “InvalidFormattingException”.
    • Define a parameterized constructor.
      • Call the parent class’s method using “super ()” by passing the message.

Program:

TimeOfDay.java:

//Import required packages

import java.util.*;

import java.util.Scanner;

//Define the main class

class TimeOfDay

{

    //Declare required variables

    private int hour, minute;

    private boolean isAM;

    //Constructor

    public TimeOfDay()

    {

        //Instantiate the values

        hour = 0;

        minute = 0;

        isAM = false;

    }

    //Function definition to set the time

public void setTimeTo(String aTime) throws InvalidFormattingException, InvalidHourException, InvalidMinuteException

    {

        //Declare required variables

        int hourFound;

        int minuteFound;

        String indicatorFound;

        //Create an object for the scanner class

        Scanner reader = new Scanner(aTime);

        //Split using the delimiter

        reader.useDelimiter(":");

        //Try block

        try

        {

            //Assign the hour

            hourFound = reader.nextInt();

        }

        //Catch the exception

        catch (Exception e)

        {

            //Throw the exception with a message

throw new InvalidFormattingException("Hour not an integer");

        }

        //Check the condition

        if(hourFound<1 || hourFound>12)

            //Throw the exception with a message

throw new InvalidHourException("Hour not in the range of 1 to 12");

        //Get the remaining string

        String restOfString = reader.next();

        reader = new Scanner(restOfString);

        //Remove the last two characters

        if(restOfString.length()<3)

            //Throw the exception

throw new InvalidFormattingException("Bad format");

        //Get the substring

String minuteString = restOfString.substring(0, restOfString.length()-2);

        //Get the substring

String amString = restOfString.substring(restOfString.length()-2);

        //Try block

        try

        {

            //Convert the minute to integer

minuteFound = Integer.parseInt(minuteString);

        }

        //Catch the exception

        catch (Exception e)

        {

            //Throw the exception

throw new InvalidFormattingException("Minute not an integer");

        }

        //Check the condition

        if(minuteFound<0 || minuteFound>59)

            //Throw the exception with a message

throw new InvalidMinuteException("Minute not in the range of 0 to 59");

        //Check condition

if(!amString...

Blurred answer
Students have asked these similar questions
Write a class TimeOfDay that uses the exception classes defined in the previous exercise. Give it a method setTimeTo(timeString) that changes the time if timeString corresponds to a valid time of day. If not, it should throw an exception of the appropriate type. [Java]
write a code in java
write a code in java

Chapter 9 Solutions

Java: An Introduction to Problem Solving and Programming (8th Edition)

Knowledge Booster
Background pattern image
Computer Science
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
C++ Programming: From Problem Analysis to Program...
Computer Science
ISBN:9781337102087
Author:D. S. Malik
Publisher:Cengage Learning
Text book image
Microsoft Visual C#
Computer Science
ISBN:9781337102100
Author:Joyce, Farrell.
Publisher:Cengage Learning,