Determine what kind of hand of poker, the five cards
are. For instance, if I have the following:

Ace of Hearts
Two of Diamonds
Two of Clubs
10 of Spades
10 of Diamonds

You would print out:

Two Pair

In general, a poker hand can be the following:

1 Pair
2 Pair
3 of a kind
4 of a kind
full house (3 of a kind and 1 pair)
straight
flush
straight flush
royal flush

import java.util.Random;

public class cards {
    public static void main(String[] args) {

    int [] deck = new int[52];  // deck of cards

    // initialize to "fresh" deck
    for (int i = 0; i < 52; i++)
        deck[i] = i;

    // create the random number generator
    Random randNumGen = new Random();

    // shuffle the deck by swapping random two cards 10000 times
    for (int i = 0; i < 10000; i++) {

        // generate two numbers in range [0, 51]
        int randPos1 = randNumGen.nextInt(52);
        int randPos2 = randNumGen.nextInt(52);

        // now swap cards at positions randPos1 and randPos2
        int temp = deck[randPos1];   // note three statements
        deck[randPos1] = deck[randPos2];
        deck[randPos2] = temp;
    }
int faceValue = 0;
int suit = 0;
String message; 

    // now we need to print first five cards, we'll use a String
    for (int i = 0; i < 5; i++) {
         faceValue = deck[i] % 13 + 1;  // in range [1,13]
         suit = deck[i] / 13;   // in range [0, 3]

        //String message;   // First look at String object

        // in class we will talk more about OBJECTS and METHODS.
        // We've already seen two examples of objects --- StdIn
        // and Random.  String is another example of an object.

        if (faceValue == 1)
        message = "Ace of ";
        else if (faceValue == 11)
        message = "Jack of ";
        else if (faceValue == 12)
        message = "Queen of ";
        else if (faceValue == 13)
        message = "King of ";
        else
        message = faceValue + " of ";

        if (suit == 0)
        message += "Spades";
        else if (suit == 1)
        message += "Clubs";
        else if (suit == 2)
        message += "Hearts";
        else
        message += "Diamonds";

        System.out.println(message);

}
        for(int i = 1; i<=13; i++){

        if(faceValue == Math.pow(4,i)){
        System.out.println("4 of a kind");
    }
         else if(faceValue == Math.pow(3,i)){
        System.out.println("3 of a kind");
    }
        else if (faceValue == Math.pow(2,i)){
        System.out.println("a pair");
    }
    }

    }
}

Edited 3 Years Ago by Dani: Formatting fixed

Hi there,

I was looking over your code, and I would use the following method. I would use an array of 4x13 ( for the four suits). When the card is dealt, it will have a certain number and a certain suit. Change the corsponding element in the array ( making sure that you are not dealing two of the same card). After that, you can use a template to go check them. For example:

To check two of a kind:

See if an two cards are in the same column

To check flush

All five cards on the same row

To check a straight

Take the lowest numbered card, and see if there is one proceeding it in any of the columns.

HTH,
Tino

This article has been dead for over six months. Start a new discussion instead.