## Homework Assignment #4

Four friends are sitting at a table and decide to play a game of poker using a standard 52-card deck. In poker, each player gets dealt 5 cards, with Player #1 getting the 1st card, Player #2 getting the 2nd card, Player #3 getting the 3rd card, Player #4 getting the 4th card, Player #1 getting the 5th cards, etc. until a total of 20 cards are dealt.

Use the random number generator in a Java program to simulate the dealing of these 20 cards to the 4 players. The assignment will focuses on the use of Math.random(), for loops, switch statements, and your ability to exactly match the format for printing the results as displayed below.

Example run:

Player 1        Player 2        Player 3        Player 4
5 of Diamonds   A of Clubs      K of Spades    10 of Diamonds
10 of Spades     9 of Diamonds   J of Diamonds   7 of Diamonds
J of Clubs     10 of Clubs      7 of Spades     J of Clubs
Q of Hearts     3 of Diamonds   A of Hearts     3 of Hearts
9 of Spades     K of Diamonds   4 of Spades     K of Hearts

REQUIREMENTS:

• Use Math.random() to generate a random number between 1 and 13 (1 is an Ace, 11 is a Jack, 12 is a Queen, and 13 is a King ... 2 thru 10 obviously represent the card values 2 thru 10) each time you deal a card.

• Use Math.random() to generate a random number between 1 and 4 (1 is Diamonds, 2 is Hearts, 3 is Spades, and 4 is Clubs) each time you deal a card

• You can receive 5 extra points if your solution only calls Math.random once for each card. If you choose to do it this way, use Math.random() to generate a number from 0 to 51. Then use div and mod to map each integer in that range to a card in the deck. You MUST make sure each of the 52 numbers in that range correspond to a unique card. If your mapping results in anything besides a one to one correspondence to the cards you will not be given any extra credit.

• You MUST include 2 methods (1 to handle the printing of the card value, and 1 to handle the printing of the card suit) Each must contain a switch statement. Make sure your program does not print something like 12 of Spades (this is why you need the switch statements).
• For example, you should have one method with the following header:

public static void printSuit (int suit)

which would print the suit of the card.

• You MUST have 2 for loops, one nested within the other. The outer for loop handles the round being dealt (Rounds 1 thru 5) while the inner loop handles the player being dealt (Players 1 thru 4). Using these repetition structures in this manner will allow you to deal cards in the order described above. DO NOT HAVE YOUR PROGRAM DEAL 5 CONSECUTIVE CARDS TO PLAYER #1, THEN 5 CONSECUTIVE CARDS TO PLAYER #2, ETC. ... THIS IS NOT ACCEPTABLE.

• You may need to use if/else statements to properly print the results in a table as displayed in the above example. You will make use of the "\t" escape sequence (to advance the cursor to next horizontal tab position) and the "\n" escape sequence (to move the cursor to the beginning of the next line).

• THE OUTPUT OF YOUR PROGRAM MUST EXACTLY MATCH THE FORMAT IN THE EXAMPLE ABOVE!

• Note that your program may actually "deal" the same card more than once (for example, the J of Clubs may appear 2 or more times as in the example above). This is OK.