public boolean hasFourOfaKind(String hand) {
int counter = 0;
char x = 0;
for (int i = 0; i < hand.length(); i++)
{
if (i == 0) {
x = hand.charAt(0);
} else if (x == hand.charAt(i)) {
counter++;
}
}
if (counter >= 4) {
return true;
} else {
return false;
}
}
同样的问题在这里我试图检查给定的四张牌是否是一个badugi
public boolean hasFourCardBadugi(String hand) {
int diffcounter = 0;
char badugi = 0;
for (int i = 0; i < hand.length(); i++) {
if (i == 0) {
badugi = hand.charAt(0);
} else if (badugi != hand.charAt(i)) {
diffcounter++;
}
}
if (diffcounter >= 10) {
return true;
} else {
return false;
}
}
答案 0 :(得分:0)
让我们来看看你的for循环。
for (int i = 0; i < hand.length(); i++)
{
if (i == 0) {
x = hand.charAt(0);
} else if (x == hand.charAt(i)) {
counter++;
}
}
在这部分
if (i == 0) {
x = hand.charAt(0);
}
您将x设置为第一张卡片。但你永远不会算那张卡。你需要添加:
if (i == 0) {
x = hand.charAt(0);
counter++;
}
当然这仍然存在一个问题,就是它不能检测到四种类型与第一张卡不匹配的手(ace两两两两),但你应该能够解决这个问题,因为基本的bug是固定的。一种方法就是涉及第二个循环。