我正在开展金鱼游戏。有四个球员。每当我尝试检查初始对时,我都会得到一个java lang异常超出边界的错误。该错误指向if语句,但我不知道如何修复代码。
以下是代码:
public void initialPairs() {
for (int index1 = 4; index1 >= 0; index1--) {
for (int index = 0; index <= 3; index++) {
if (hand.get(index1).getRank() == hand.get(index).getRank() && index != index1)
{
Card c = hand.remove(index1);
Card d = hand.remove(index);
size = size - 2;
System.out.println("Removed: " + c + " & " + d);
System.out.println("Player 1's hand:" + hand);
}
}
}
}
更多信息:每手牌获得5张牌。检查“初始对”意味着在人们可以询问另一个玩家是否有他们的卡之前,他们的手会被检查成对。所以,如果我有2个A,那么它应该被移除。
答案 0 :(得分:0)
问题是你假设手牌有五张牌,而且你在删除一对牌后没有调整索引。最后,当你找到一对时,你想立即突破内循环。试试这个:
public void initialPairs() {
for (int index1 = hand.getSize(); index1 > 0; index1--) {
for (int index = 0; index < index1; index++) {
if (hand.get(index1).getRank() == hand.get(index).getRank())
{
Card c = hand.remove(index1);
Card d = hand.remove(index);
size = size - 2;
--index1; // adjust for removal of element at position index
System.out.println("Removed: " + c + " & " + d);
System.out.println("Player 1's hand:" + hand);
break;
}
}
}
}