import java.util.Random;

/**
 * 56 card deck, no Jokers.
 *
 * Shuffle cards and then draw them down.
 */

public class Shuffle
{

    public static void main (String args[]) throws Exception
    {
	boolean finished = false;
	int cardsDealt = 0;

	while (!finished)
	{
	    int theSuite = randSuite.nextInt(3)+1;
	    char theCard = NOCARD;

	    // choose card.

	    switch (theSuite)
	    {
	    case 1:
		theCard = getCard(_hearts);
		break;
	    case 2:
		theCard = getCard(_spades);
		break;
	    case 3:
		theCard = getCard(_clubs);
		break;
	    case 4:
		theCard = getCard(_clubs);
		break;
	    default:
		// error

		throw new Exception("Invalid card "+theSuite);
	    }

	    if (theCard != NOCARD)
		cardsDealt++;

	    if (cardsDealt == 56)
		finished = true;
	}
    }

    private char getCard (char[] suite)
    {
	int cardsLeft = 0;
	char toReturn = NOCARD;

	for (int i = 0; i < 14; i++)
	{
	    if (suite[i] != NOCARD)
		cardsLeft++;
	}

	if (cardsLeft != 0)
	{
	    do
	    {
		int theCard = randCard.nextInt(14);
		
		toReturn = suite[theCard];

		if (toReturn != NOCARD)
		    suite[theCard] = NOCARD;
	    }
	    while (toReturn != NOCARD);
	}

	return toReturn;
    }

    private Random _randSuite = new Random();
    private Random randCard = new Random();

    private char[] _hearts = { 'A', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'X', 'J', 'Q', 'K' };
    private char[] _spades = { 'A', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'X', 'J', 'Q', 'K' };
    private char[] _clubs = { 'A', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'X', 'J', 'Q', 'K' };
    private char[] _diamonds = { 'A', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'X', 'J', 'Q', 'K' };

    private static final char NOCARD = '';
}
@@ -334,16 +334,40 @@
  NOCARD;
+%0A%09    String suite = %22%22;
 %0A%0A%09    /
@@ -451,24 +451,44 @@
 d(_hearts);%0A
+%09%09suite = %22Hearts%22;%0A
 %09%09break;%0A%09  
@@ -523,24 +523,44 @@
 d(_spades);%0A
+%09%09suite = %22Spades%22;%0A
 %09%09break;%0A%09  
@@ -590,32 +590,51 @@
 etCard(_clubs);%0A
+%09%09suite = %22Clubs%22;%0A
 %09%09break;%0A%09    ca
@@ -656,30 +656,55 @@
  = getCard(_
-clubs)
+diamonds);%0A%09%09suite = %22Diamonds%22
 ;%0A%09%09break;%0A%09
@@ -809,24 +809,31 @@
  != NOCARD)%0A
+%09    %7B%0A
 %09%09cardsDealt
@@ -837,16 +837,464 @@
 alt++;%0A%0A
+%09%09System.out.print(%22Card dealt: %22);%0A%0A%09%09switch (theCard)%0A%09%09%7B%0A%09%09case 'A':%0A%09%09    System.out.print(%22Ace%22);%0A%09%09    break;%0A%09%09case 'X':%0A%09%09    System.out.print(%22Ten%22);%0A%09%09    break;%0A%09%09case 'J':%0A%09%09    System.out.print(%22Jack%22);%0A%09%09    break;%0A%09%09case 'Q':%0A%09%09    System.out.print(%22Queen%22);%0A%09%09    break;%0A%09%09case 'K':%0A%09%09    System.out.print(%22King%22);%0A%09%09    break:%0A%09%09default:%0A%09%09    System.out.print(theCard);%0A%09%09    break:%0A%09%09%7D%0A%0A%09%09System.out.print(%22 of %22+suite);%0A%09    %7D%0A%0A
 %09    if 

Update Shuffle.java