金鱼初始配对

时间:2013-12-11 19:42:02

标签: java

我正在开展金鱼游戏。有四个球员。每当我尝试检查初始对时,我都会得到一个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,那么它应该被移除。

1 个答案:

答案 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;
            }
        }
    }

}