D.7 What is the value of x
after each of the following statements is executed?
a) x = Math.abs(
7.5 );
b) x = Math.floor(
7.5 );
c) x = Math.abs(
0.0 );
d) x = Math.ceil(
0.0 );
e) x = Math.abs(
-6.4 );
f) x = Math.ceil(
-6.4 );
g) x = Math.ceil( -Math.abs(
-8 + Math.floor(
-5.5 ) ) );
D.8 (Parking Charges) A parking garage charges a $2.00 minimum fee to park for up to three hours. The garage charges an additional $0.50 per hour for each hour or part thereof in excess of three hours. The maximum charge for any given 24-hour period is $10.00. Assume that no car parks for longer than 24 hours at a time. Write an application that calculates and displays the parking charges for each customer who parked in the garage yesterday. You should enter the hours parked for each customer. The program should display the charge for the current customer and should calculate and display the running total of yesterday’s receipts. It should use the method calculateCharges
to determine the charge for each customer.
D.9 (Rounding Numbers) Math.floor
can be used to round values to the nearest integer—e.g.,
y = Math.floor( x + 0.5 );
will round the number x
to the nearest integer and assign the result to y
. Write an application that reads double
values and uses the preceding statement to round each of the numbers to the nearest integer. For each number processed, display both the original number and the rounded number.
D.10 (Rounding Numbers) T
o round numbers to specific decimal places, use a statement like
y = Math.floor( x * 10 + 0.5 ) / 10;
which rounds x
to the tenths position (i.e., the first position to the right of the decimal point), or
y = Math.floor( x * 100 + 0.5 ) / 100;
which rounds x
to the hundredths position (i.e., the second position to the right of the decimal point). Write an application that defines four methods for rounding a number x
in various ways:
a) roundToInteger( number )
b) roundToTenths( number )
c) roundToHundredths( number )
d) roundToThousandths( number )
For each value read, your program should display the original value, the number rounded to the nearest integer, the number rounded to the nearest tenth, the number rounded to the nearest hundredth and the number rounded to the nearest thousandth.
D.11 Answer each of the following questions:
a) What does it mean to choose numbers “at random”?
b) Why is the nextInt
method of class Random
useful for simulating games of chance?
c) Why is it often necessary to scale or shift the values produced by a Random
object?
d) Why is computerized simulation of real-world situations a useful technique?
D.12 Write statements that assign random integers to the variable n in the following ranges:
a) 1 ≤n ≤ 2.
b) 1 ≤n ≤ 100.
c) 0 ≤n ≤ 9.
d) 1000 ≤n ≤ 1112.
e) –1 ≤n ≤ 1.
f) –3 ≤n ≤ 11.
D.13 Write statements that will display a random number from each of the following sets:
a) 2, 4, 6, 8, 10.
b) 3, 5, 7, 9, 11.
c) 6, 10, 14, 18, 22.
D.14 (Exponentiation) Write a method integerPower(base, exponent)
that returns the value of
base exponent
For example, integerPower(3, 4)
calculates 3
4
(or 3 * 3 * 3 * 3
). Assume that exponent
is a positive, nonzero integer and that base
is an integer. Use a for
or while
statement to control the calculation. Do not use any Math
class methods. Incorporate this method into an application that reads integer values for base
and exponent
and performs the calculation with the integerPower
method.
D.15 (Multiples) Write a method isMultiple
that determines, for a pair of integers, whether the second integer is a multiple of the first. The method should take two integer arguments and return true
if the second is a multiple of the first and false
otherwise. [Hint: Use the remainder operator.] Incorporate this method into an application that inputs a series of pairs of integers (one pair at a time) and determines whether the second value in each pair is a multiple of the first.
D.16 (Even or Odd) Write a method isEven
that uses the remainder operator (%
) to determine whether an integer is even. The method should take an integer argument and return true
if the integer is even and false
otherwise. Incorporate this method into an application that inputs a sequence of integers (one at a time) and determines whether each is even or odd.
D.17 (Circle Area) Write an application that prompts the user for the radius of a circle and uses a method called circleArea
to calculate the area of the circle.
D.18 (Temperature Conversions) Implement the following integer methods:
a) Method celsius
returns the Celsius equivalent of a Fahrenheit temperature, using the calculation
celsius = 5.0 / 9.0 * ( fahrenheit - 32 );
b) Method fahrenheit
returns the Fahrenheit equivalent of a Celsius temperature, using the calculation
fahrenheit = 9.0 / 5.0 * celsius + 32;
c) Use the methods from parts (a) and (b) to write an application that enables the user either to enter a Fahrenheit temperature and display the Celsius equivalent or to enter a Celsius temperature and display the Fahrenheit equivalent.
D.19 (Find the Minimum) Write a method minimum3
that returns the smallest of three floating-point numbers. Use the Math.min
method to implement minimum3
. Incorporate the method into an application that reads three values from the user, determines the smallest value and displays the result.
D.20 (Greatest Common Divisor) The greatest common divisor (GCD) of two integers is the largest integer that evenly divides each of the two numbers. Write a method gcd
that returns the greatest common divisor of two integers. [Hint: You might want to use Euclid’s algorithm. You can find information about it at en.wikipedia.org/wiki/Euclidean_algorithm
.] Incorporate the method into an application that reads two values from the user and displays the result.
D.21 (Quality Points) Write a method qualityPoints
that inputs a student’s average and returns 4
if it’s 90–100, 3
if 80–89, 2
if 70–79, 1
if 60–69 and 0
if lower than 60. Incorporate the method into an application that reads a value from the user and displays the result.
D.22 (Coin Tossing) Write an application that simulates coin tossing. Let the program toss a coin each time the user chooses the “Toss Coin
” menu option. Count the number of times each side of the coin appears. Display the results. The program should call a separate method flip
that takes no arguments and returns a value from a Coin enum
(HEADS
and TAILS
). [Note: If the program realistically simulates coin tossing, each side of the coin should appear approximately half the time.]
D.23 (Guess the Number) Write an application that plays “guess the number” as follows: Your program chooses the number to be guessed by selecting a random integer in the range 1 to 1000. The application displays the prompt Guess a number between 1 and 1000
. The player inputs a first guess. If the player's guess is incorrect, your program should display "Too high. Try again."
or "Too low. Try again."
to help the player “zero in” on the correct answer. The program should prompt the user for the next guess. When the user enters the correct answer, display "Congratulations. You
guessed the number!"
, and allow the user to choose whether to play again. The guessing technique employed in this problem is similar to a binary search.
D.24 (Craps Game Modification) Modify the craps program of Fig. D.5 to allow wagering. Initialize variable bankBalance
to 1000 dollars. Prompt the player to enter a wager
. Check that wager
is less than or equal to bankBalance
, and if it’s not, have the user reenter wager
until a valid wager
is entered. Then, run one game of craps. If the player wins, increase bankBalance
by wager
and display the new bankBalance
. If the player loses, decrease bankBalance
by wager
, display the new bankBalance
, check whether bankBalance
has become zero and, if so, display the message "Sorry. You busted!"
As the game progresses, display various messages to create some “chatter,” such as "Oh, you're going for broke, huh?"
or "Aw c'mon, take a chance!"
or "You're up big. Now's the time to cash in your chips!"
. Implement the “chatter” as a separate method that randomly chooses the string to display.
D.25 (Computer-Assisted Instruction) The use of computers in education is referred to as computer-assisted instruction (CAI). Write a program that will help an elementary school student learn multiplication. Use a Random
object to produce two positive one-digit integers. The program should then prompt the user with a question, such as
How much is 6 times 7?
The student then inputs the answer. Next, the program checks the student’s answer. If it’s correct, display the message "Very good!"
and ask another multiplication question. If the answer is wrong, display the message "No. Please try again."
and let the student try the same question repeatedly until the student finally gets it right. A separate method should be used to generate each new question. This method should be called once when the application begins execution and each time the user answers the question correctly.
D.26 (Computer-Assisted Instruction: Reducing Student Fatigue) One problem in CAI environments is student fatigue. This can be reduced by varying the computer’s responses to hold the student’s attention. Modify the program of Exercise D.25 so that various comments are displayed for each answer as follows:
Possible responses to a correct answer:
Very good!
Excellent!
Nice work!
Keep up the good work!
Possible responses to an incorrect answer:
No. Please try again.
Wrong. Try once more.
Don't give up!
No. Keep trying.
Use random-number generation to choose a number from 1 to 4 that will be used to select one of the four appropriate responses to each correct or incorrect answer. Use a switch
statement to issue the responses.
D.27 (Computer-Assisted Instruction: Varying the Types of Problems) Modify the previous program to allow the user to pick a type of arithmetic problem to study. An option of 1
means addition problems only, 2
means subtraction problems only, 3
means multiplication problems only, 4
means division problems only and 5
means a random mixture of all these types.