因此這裏的前提是檢查一個包含五個「卡」的字符串數組,以查看給出的是什麼類型的手。手的類型是一個int,其中較高的數字是更好的牌。這個代碼特別segement不是我寫的,而是由一個朋友,誰是有麻煩,我不能完全找到問題Java語句執行除了變量變量
int checkHand(String[][] Hand) {
boolean check = true;
for(int i = 0; i < 4; i++) {
if(!Hand[i][1].equals(Hand[i+1][1]))
check = false;
}
//check pair starts
for(int i = 0; i < 5; i++) {
for(int n = i + 1; n < 5; n++) {
if(Hand[i][0].equals(Hand[n][0])) {
BestCard = 1;//###OUTPUTS 1 FOR A PAIR###
temp = Hand[0];
Hand[0] = Hand[i];
Hand[i] = temp;
temp = Hand[1];
Hand[1] = Hand[n];
Hand[n] = temp;
//check three of a kind starts
for(int p = n + 1; p < 5; p++) {
if(Hand[i][0].equals(Hand[p][0])) {
temp = Hand[2];
Hand[2] = Hand[p];
Hand[p] = temp;
BestCard = 3; //Problem starts here- Output 3 for Three of a Kind
if(Hand[3][0].equals(Hand[4][0]))
BestCard = 6;//###OUTPUTS A 6 FOR A FULL HOUSE###
else if(Hand[2][0].equals(Hand[3][0])) {
BestCard = 7;
}
else if(Hand[2][0].equals(Hand[4][0])) {
temp = Hand[3];
Hand[3] = Hand[4];
Hand[4] = temp;
BestCard = 7;//###OUTPUTS A 7 FOR A FOUR OF A KIND###
}
}
}
}
}
}
if(check && BestCard<4)
BestCard = 5;//###OUTPUTS 5 FOR A FLUSH###
else if(check && BestCard == 4)
BestCard = 8;//###OUTPUTS 8 FOR A STRAIGHT FLUSH###
return BestCard;
}
在運行此(而且有更多的它,但是這是我相信是問題所在),它可以決定所述的手是否是一對或齊平。除此之外,它不會返回正確的數字。奇怪的是,聲明中的其他所有內容都會運行 - 如果有三種被強制但未被排序,則該手將被重新排序以保持正確。同樣的情況發生在四種類型中。評論是在BestCard的價值發生變化的地方給出的。 int BestCard和String [] temp已經初始化。