Question: Suppose the Get/Set Program example available for download in this weeks lecture was changed slightly. The change was with one line of code and does

Suppose the Get/Set Program example available for download in this weeks lecture was changed slightly. The change was with one line of code and does not throw an error and the program compiles. No lines of code were deleted, but one line has been edited. When the program runs, the output is as follows (user input in BOLD):

This program will determine the number of hours for days, weeks, and months entered.

Please enter a number: 5

There are 0 hours in 5 day(s).

There are 0 hours in 5 week(s).

There are 0 hours in 5 month(s).

What seems to be the problem with the code?

Below is the Main Class Code from this week.

package getsetsample;

/**

* @Course: SDEV 250 ~ Java Programming I

* @Author Name: jwabbs

* @Assignment Name: getsetsample

* @Date: Jul 4, 2017

* @Description: Simple get and set method program to determine hours in day(s),

* week(s) and month(s).

*/

//Imports

import java.util.Scanner;

//Begin Class GetSetSample

public class GetSetSample {

//Begin Main Method

public static void main(String[] args) {

//New Scanner object

Scanner sc = new Scanner(System.in);

//Declarations

int nums;

//Welcome statement

System.out.println("This program will determine the number of hours for days, " + "weeks, and months entered.");

//Ask for input from user

System.out.print(" Please enter a number: ");

nums = sc.nextInt();

//New instance of the subclass and constructor. Send input to subclass

TimeCount myTC = new TimeCount(nums);

/**

Because you have already set the days in the line above, you can now retrieve the final value

*/

System.out.printf("There are %d hours in %d day(s). ", myTC.getDays(), nums);

System.out.printf("There are %d hours in %d week(s). ", myTC.getWeeks(), nums);

System.out.printf("There are %d hours in %d month(s). ", myTC.getMonths(), nums);

/**

Conversely, you can set the values individually as shown below. You can comment out lines 33 - 41 above and uncomment lines 50 - 61 below to see the results. Simply highlight the lines you want to comment (or uncomment) and select Source -> Toggle Comment from the menu at the top of NetBeans. If you decide to try this, you must change the set methods in the subclass to public or you will have errors.

*/

// //New instance of the subclass and constructor.

//TimeCount myTC = new TimeCount();

//

// //Set each value

// // myTC.setDays(nums);

// // myTC.setWeeks(nums);

// // myTC.setMonths(nums);

// //Get the derived values

//

// System.out.printf("There are %d hours in %d day(s). ", myTC.getDays(), nums);

// System.out.printf("There are %d hours in %d week(s). ", myTC.getWeeks(), nums);

// System.out.printf("There are %d hours in %d month(s). ", myTC.getMonths(), nums);

} //End Main Method

}//End Class GetSetSample

Below is the SubClass Code for this week.

package getsetsample;

/** * @Course: SDEV 250 ~ Java Programming I

* @Author Name: jwabb

* @Assignment Name: getsetsample

* @Date: Jul 4, 2017

* @Description: Simple subclass with set and get methods

*/

//Imports

//Begin Class TimeCount

public class TimeCount {

/**

Make some declarations that are private to the subclass here.

Use final to set the default hours. These will not change and

their values do not need to be revealed to the main class; thus the

'private'

Note: Month assumes a 30 day month in this example. Simple subclass with set and get methods

*/

private final int HRS = 24;

private final int WK = 168;

private final int MONTH = 720;

int numD;

int numW;

int numM;

/**

* Constructor - call to set value passed from main

* @param num

*/

public TimeCount(int num) {

setTime(num);

}

/**

* Constructor - Initializes default value of 0

*/

public TimeCount() {

this(0);

}

/**

* Calls to set values for set methods

* @param num

*/

private void setTime(int num) {

setDays(num);

setWeeks(num);

setMonths(num);

} //Set methods***************************************************************

/**

The set methods are used to derive an answer. The sets are void methods, so

they do not return data. They simply act upon what is sent to them and

assign the new value to a variable. These are declared as private because

the initial setup in main does not need to access them directly.

*/

/**

* Determine hours in number of days entered

* setDays is called from setTime above and the value num is passed into the new

* value h. h is multiplied by the final variable hrs to derive the total number

* of hours. The process repeats for other set methods.

* @param h

*/

private void setDays(int h) {

numD = h * HRS;

}

/**

*Determine hours in number of weeks entered

* @param w

*/

private void setWeeks(int w) {

numW = w * WK;

}

/**

* Determine hours in number of months entered

* @param m

*/

private void setMonths(int m) {

numM = m

* MONTH;

}

//Get methods***************************************************************

/**

The get methods are merely a way to call the results after they have been set

& derived within the set methods above. They are not of type void so they

must return a value.

*/

/** * Get hours in days

* @return

*/

public int getDays() {

return numD;

}

/**

* Get hours in weeks

* @return

*/

public int getWeeks() {

return numW; }

/**

* Get hours in months

* @return

*/

public int getMonths() {

return numM;

}

} //End Class TimeCount

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!