Westonci.ca is the premier destination for reliable answers to your questions, brought to you by a community of experts. Get detailed and accurate answers to your questions from a dedicated community of experts on our Q&A platform. Connect with a community of professionals ready to provide precise solutions to your questions quickly and accurately.

Consider the following instance variables and incomplete method that are part of a class that represents an item. The variables years and months are used to represent the age of the item, and the value for months is always between 0 and 11, inclusive. Method updateAge is used to update these variables based on the parameter extraMonths that represents the number of months to be added to the age.
private int years;
private int months; // 0 <= months <= 11
public void updateAge(int extraMonths)
{
/* body of updateAge */
}
Which of the following code segments shown below could be used to replace /* body of updateAge */ so that the method will work as intended?
I int yrs = extraMonths % 12;
int mos = extraMonths / 12;
years = years + yrs;
months = months + mos;
II int totalMonths = years * 12 + months + extraMonths;
years = totalMonths / 12;
months = totalMonths % 12;
III int totalMonths = months + extraMonths;
years = years + totalMonths / 12;
months = totalMonths % 12;
a. I only
b. II only
c. III only
d. I and II only
e. II and III


Sagot :

Answer:

e. II and III

Explanation:

Given

The above code segment

Required

Which can complete the updateAge() method

From the program we understand that the updateAge() will update the year and month based on the extraMonths passed to it.

For instance

[tex]years = 6[/tex] and [tex]months = 8[/tex]

updateAge(5) will update years to 7 and month 1

Having established that, next we analyze options I, II and III

Code I

1. This divides extraMonths by 12 and saves the remainder in yrs.

For instance: 15 months = 1 year and 3 months. So:

[tex]yrs = 3[/tex]

2. This divides extraMonths by 12 and saves the whole part in mos

For instance: 15 months = 1 year and 3 months. So:

[tex]mos = 1[/tex]

3. This updates the value of years by the result of 1 (i.e. the remaining months)

4. This updates the value of years by the result of 2 (i.e. the remaining years)

[tex]months = months + mos;[/tex]

Conclusion:, (I) is incorrect because years and months were updated with the wrong values

Code II

1. This converts years to months, then add the result of the conversion to extraMonths + month

For instance: [tex]years = 3; months = 6; extraMonths = 15[/tex]

[tex]totalMonths = 3 * 12 + 6 + 15 = 57\ months[/tex]

2. This calculates the number of years in totalMonths

[tex]years = totalMonths / 12;[/tex]

i.e [tex]years = 57/12 = 4[/tex]

3. This divides totalMonths by 12 and saves the remainder in months

[tex]months = totalMonths \% 12;[/tex]

i.e. [tex]months = 57\%12 = 9[/tex]

Rough Calculation

[tex]years = 3; months = 6; extraMonths = 15[/tex]

[tex]3\ years + 6\ months + 15\ months = 4\ years\ 9\ months[/tex]

Conclusion: Code II is correct

Code III

1. This calculates the total months

For instance: [tex]years = 3; months = 6; extraMonths = 15[/tex]

[tex]totalMonths = 6 + 15 = 21\ months[/tex]

2. This calculates the number of years in totalMonths, then add the result ot years

[tex]years = years + totalMonths / 12;[/tex]

i.e. [tex]years = 3 + 21/12 = 3 + 1 = 4[/tex]

3. This divides totalMonths by 12 and saves the remainder in months

[tex]months = totalMonths \% 12;[/tex]

i.e. [tex]months = 21\%12 = 9[/tex]

Rough Calculation

[tex]years = 3; months = 6; extraMonths = 15[/tex]

[tex]3\ years + 6\ months + 15\ months = 4\ years\ 9\ months[/tex]

Conclusion: Code III is correct

Thank you for your visit. We're dedicated to helping you find the information you need, whenever you need it. We hope this was helpful. Please come back whenever you need more information or answers to your queries. We're here to help at Westonci.ca. Keep visiting for the best answers to your questions.