## Solution for

Programming Exercise 2.2

THIS PAGE DISCUSSES ONE POSSIBLE SOLUTION to the following exercise from this on-line Java textbook.

Exercise 2.2:Write a program that simulates rolling a pair of dice. You can simulate rolling one die by choosing one of the integers 1, 2, 3, 4, 5, or 6 at random. The number you pick represents the number on the die after it is rolled. As pointed out in Section 5, The expression(int)(Math.random()*6) + 1does the computation you need to select a random integer between 1 and 6. You can assign this value to a variable to represent one of the dice that is being rolled. Do this twice and add the results together to get the total roll. Your program should report the number showing on each die as well as the total roll. For example:

The first die comes up 3 The second die comes up 5 Your total roll is 8

Discussion

This program will need some variables to represent the numbers showing on each die and the total of the two dice. Since these numbers are all integers, we can use three variables of type

int. I'll call the variablesdie1,die2, androll. The program begins by declaring the variables:int die1; int die2; int roll;In the actual program, of course, I've added a comment to explain the purpose of each variable. The values of

die1anddie2can be computed using the expression given in the exercise:die1 = (int)(Math.random()*6) + 1; die2 = (int)(Math.random()*6) + 1;Note that even though the expressions on the right-hand sides of these assignment statements are different, the values can be different because the function

Math.random()can return different values when it is called twice.We can then compute

roll = die1 + die2and use threeSystem.out.printlnstatements to display the three lines of output:System.out.println("The first die comes up " + die1); System.out.println("The second die comes up " + die2); System.out.println("Your total roll is " + roll);Note that I've chosen to use the concatenation operator,

+, to append the value ofdie1onto the string "The first die comes up". Alternatively, I could use two output statements:System.out.print("The first die comes up "); System.out.println(die);I'll also note that I could get away without the variable

roll, since I could output the value of the expressiondie1 + die2directly:System.out.println("Your total roll is " + (die1 + die2));However, it's generally better style to have a meaningful name for a quantity. By the way, the parentheses around

(die1 + die2)are essential because of the precedence rules for the+operator. You might try to experiment with leaving them out and see what happens.

The Solution

public class RollTheDice { /* This program simulates rolling a pair of dice. The number that comes up on each die is output, followed by the total of the two dice. */ public static void main(String[] args) { int die1; // The number on the first die. int die2; // The number on the second die. int roll; // The total roll (sum of the two dice). die1 = (int)(Math.random()*6) + 1; die2 = (int)(Math.random()*6) + 1; roll = die1 + die2; System.out.println("The first die comes up " + die1); System.out.println("The second die comes up " + die2); System.out.println("Your total roll is " + roll); } // end main() } // end class

[ Exercises | Chapter Index | Main Index ]