I am trying to make a program that deals hands in poker. I am trying to make the straight and straight flush, but can't fix the little bugs. If anyone could help me I would greatly appreciate it. Thanks in advance!
This is a class I am calling upon:
[/CODE]import java.lang.Math.*; /** 4: * Card.java<br> 5: * CS 110 Sample Class<br> 6: * Models a Playing Card such as the ace of spades 7: */ public class Card { public enum Suits{spades,hearts,clubs,diamonds} public final static int ACE =1; public final static int JACK =11; public final static int QUEEN =12; public final static int KING =13; private int face; private Suits suit; //Constructors /**null constructor randomly generates a card<br> 23: * Pre-Conditions: none <br> 24: * Post-conditions: a single legitimate card is generated, no test for uniqueness*/ public Card () { face = (int)(Math.random() * 13 +1); switch((int)(Math.random()*4)) { case 0: suit = Suits.spades; break; case 1: suit = Suits.hearts; break; case 2: suit = Suits.clubs; break; case 3: suit = Suits.diamonds; break; } } /**initializes suit_type=>s, face=>f<br> 43: * Pre-Conditions: legimitmate face and suit value<br> 44: * Post-Condition: a speciific card face=f, suit=s is generated<br> 45: * responses: illegitimate Card 46: * @param s = suit value specified 47: * @param f = face value specified*/ public Card (Suits s, int f) { suit = s; face = f; } //accessors /**returns the suit value of the specified card<br> 56: * pre-conditions: none<br> 57: * post-conditions: card is unchanged 58: * @return suit value of card specified*/ public Suits suit () { return suit; } /**returns the face value of the specified card<br> 65: * pre-conditions: none<br> 66: * post-conditions: card is unchanged 67: * @return face value of card specified*/ public int face () { return face; } /**Function to display card face of suit<br> 74: * pre-conditions: none<br> 75: * post-conditions: the card value as face of suit is display on the screen*/ public void printcard() { System.out.print("The card is "); if (face > 1 && face <= 10) System.out.print(face); else { if (face == ACE) System.out.print("Ace"); else if (face == JACK) System.out.print("Jack"); else if (face == QUEEN) System.out.print("Queen"); else System.out.print("King"); } System.out.print(" of " + suit); } //mutators /**Function to modify the face value of a card<br> 94: * pre-conditions: face value specified is legitimate<br> 95: * post-conditions: card recieveing the message's face value is set to the paramater<br> 96: * responses: an illegitimate Card 97: * @param f = face value specified*/ public void setFace (int f) { face = f; } /**Function to modify the suit value of a card<br> 104: * pre-conditions: suit value specified is legitimate<br> 105: * post-conditions: card recieveing the message's suit value is set to the paramater<br> 106: * repsonses: an illegitimate Card 107: * @param s = suit value specified*/ public void setSuit (Suits s) { suit = s; } /**function to test equality of two cards<br> 114: * pre-conditions: card c1 is a valid card<br> 115: * post-conditions: none the object recieveing the message remains unchanged<br> 116: * responses: error terminate 117: * @param c1 = valid Card 118: * @return true if the cards are equivalent, false if different in either face or suit*/ public boolean equals (Card c1) { return (c1.face == face && c1.suit == suit); } /**function to determine if same face value<br> 125: * pre-conditions: card c1 is a valid card<br> 126: * post-conditions: none the object recieveing the message remains unchanged<br> 127: * responses: error terminate 128: * @param c1 = valid Card 129: * @return true if the cards face values are are equivalent, false if different in face*/ public boolean sameFace (Card c1) { return (c1.face == face); } public boolean sameSuit (Card c1) { return (c1.suit == suit); } public String toString() { return face + " of " + suit; } } This is my class I created: [CODE] import java.util.Scanner; public class Poker { public static void main (String [] agrs) { Card [] hand = new Card [5]; /*//generate a hand of 5 random cards for (int i =0;i<hand.length;i++) hand[i] = new Card(); */ hand[0] = new Card(Card.Suits.hearts,1); hand[1] = new Card(Card.Suits.spades,1); hand[2] = new Card(Card.Suits.clubs,1); hand[3] = new Card(Card.Suits.hearts,11); hand[4] = new Card(Card.Suits.hearts,2); //display the hand System.out.println("the hand dealt is: "); for (int i=0;i<hand.length;i++) System.out.println(hand[i]); if (flush(hand)) System.out.print("Great hand a flush!!!!"); else if (fullHouse (hand)) System.out.print("Great handfull house"); else if (fourKind(hand)) System.out.print("Greathand, four of a kind"); else if (threeKind(hand)) System.out.print("Good hand three of akind"); else if (twoKind(hand)) System.out.print("two of a kind"); else System.out.print ("Trade them all in"); System.out.println(); System.out.print ("thanks for playing"); } public static boolean flush (Card [] hand) { boolean isFlush = true; Card firstOne = new Card(hand[0].suit(), hand[0].face()); for (int i = 1; isFlush && i<hand.length;i++) if (!firstOne.sameSuit(hand[i])) isFlush=false; return isFlush; } public static boolean fullHouse (Card [] hand) { System.out.println("in full house"); return (threeKind(hand) && twoKind(hand)); } public static boolean fourKind(Card [] hand) { int count =0; for (int i=0; count < 3 && i<hand.length;i++) { count =0; for (int j=i+1;j<hand.length;j++) if (hand[i].sameFace(hand[j])) count++; } return (count==3); } public static boolean threeKind(Card [] hand) { int count =0; for (int i=0; count < 2 && i<hand.length;i++) { count =0; for (int j=i+1;j<hand.length;j++) if (hand[i].sameFace(hand[j])) count++; } return (count==2); } public static boolean twoKind(Card [] hand) { int count =0; for (int i=0; count < 1 && i<hand.length;i++) { count =0; for (int j=i+1;j<hand.length;j++) if (hand[i].sameFace(hand[j])) count++; } return (count==1); } public boolean isStraight(Card [] hand){ int[] values = new int[5]; int pos; int temp; //Set values in array for(int i = 0; i < hand.length; i++){ values[i] = hand[i].sameFace(hand[i]); //If Ace if(values[i] == 1) values[i] = 14; } //Sort Numerically for(int i = 1; i < values.length; i++){ pos = i; while(pos != 0){ if(values[pos] < values[pos-1]){ temp = values[pos]; values[pos] = values[pos-1]; values[pos-1]= temp; } pos--; } } for(int i = 0; i < values.length - 1; i++){ if(values[i] != values[i+1] - 1) return false; } return true; } public boolean StraightFlush(){ //If theres a straight and a flush present if(Straight(hand[]) == true && flush(hand[]) == true) return true; return false; } }