Deal.java


Below is the syntax highlighted version of Deal.java from §1.4 Arrays.


/******************************************************************************
 * Compilation: javac Deal.java
 * Execution: java Deal PLAYERS
 *
 * Deal 5-card hands at random to the given number of players.
 *
 * % java Deal 3
 * 4 of Spades
 * 9 of Spades
 * Ace of Hearts
 * 9 of Clubs
 * 9 of Diamonds
 *
 * 6 of Spades
 * 10 of Hearts
 * Queen of Hearts
 * 8 of Hearts
 * King of Spades
 *
 * 7 of Hearts
 * 8 of Diamonds
 * Queen of Spades
 * 3 of Spades
 * 4 of Diamonds
 *
 ******************************************************************************/
publicclassDeal{
publicstaticvoidmain(String[] args){
int CARDS_PER_PLAYER =5;
// number of players
int PLAYERS = Integer.parseInt(args[0]);
 String[] SUITS ={
"Clubs","Diamonds","Hearts","Spades"
};
 String[] RANKS ={
"2","3","4","5","6","7","8","9","10",
"Jack","Queen","King","Ace"
};
int n = SUITS.length * RANKS.length;
if(CARDS_PER_PLAYER * PLAYERS > n)
thrownewRuntimeException("Too many players");
// initialize deck
 String[] deck =new String[n];
for(int i =0; i < RANKS.length; i++){
for(int j =0; j < SUITS.length; j++){
 deck[SUITS.length*i + j]= RANKS[i]+" of "+ SUITS[j];
}
}
// shuffle
for(int i =0; i < n; i++){
int r = i +(int)(Math.random()*(n-i));
String temp = deck[r];
 deck[r]= deck[i];
 deck[i]= temp;
}
// print shuffled deck
for(int i =0; i < PLAYERS * CARDS_PER_PLAYER; i++){
 System.out.println(deck[i]);
if(i % CARDS_PER_PLAYER == CARDS_PER_PLAYER -1)
 System.out.println();
}
}
}

AltStyle によって変換されたページ (->オリジナル) /


Copyright © 2000–2017, Robert Sedgewick and Kevin Wayne.
Last updated: Fri Oct 20 14:12:12 EDT 2017.