私はポーカーゲームに取り組んでいます。これまでのところ、私はポーカーハンドの比較にこだわっています。私はそれをどのように行うかについてある程度の考えを持っていますが、私のコードの何が悪いのかわかりません。誰かが何が悪いのか指摘してもらえますか?
それでは、私のコードが何をしているのかを簡単に説明しましょう。
プログラムの他の部分では、手札のカードを調べて、カード値の頻度を配列にリストします。
h = Hearts
c = Clubs
d = Diamonds
s = Spades
d4 = 4 of Diamond
つまり、私の手にc3、h4、d4、s4、2dがあるとしましょう。プログラムの他の部分を呼び出して、手にあるカードを読み取り、集計配列を返します。上記の私の手の集計配列は[0,0,1,1,3,0,0,0,0,0,0,0,0,0]になります。つまり、この配列が言っていることは、私の手が1つ2つ、1つ3つ、3つ4つあります。
これが、Three of a Kindを見つけようとする私の方法です。フルハウス(3種類とペア)の場合はfalseを返す必要があります。
public boolean hasThreeOfAKind() {
int [] temp;
temp = this.getCounts();
for (int i = 0; i< temp.length; i++){
if (temp [i] == 3 ){
for (int j = 0; j < temp.length ; j++)
if ( temp [j] != 2){
return true;
}
}
}return false;
したがって、上記で実行しようとしているのは、最初に配列を実行し、3がある場合は配列を実行し、3がある場合は配列を再度実行して、2があるかどうかを確認します。 a 2、それなら私はそれが3種類であることを知っています。2がある場合、それはフルハウスであり、falseを返す必要があります。私の論理は正しいと思いますが、私のコードに何か問題があります。
そして、私が問題を抱えている秒針は、私の手が正確に1つのペアを持っているかどうかを判断する方法です。ペアが1つしかない場合にのみtrueを返します。2つのペアなどがある場合はfalseを返します。
public boolean hasOnePair() {
int [] temp;
temp = this.getCounts();
for (int i = 0; i< temp.length; i++){
if (temp [i] == 2 ){
return true;
}
}return false;
これについては、配列内の値を降順または昇順で並べ替えることを考えています。降順を選択した場合、最初に配列を読み取り、2があるかどうかを確認します。次に、次の配列をスキャンして、最初の2の後の次の値も2であるかどうかを確認します。別の2がある場合は、 falseを返します。
誰かが私のコードを見て、何が悪いのか指摘してもらえますか?どうもありがとうございます。