Java 金鱼首对

Java 金鱼首对,java,Java,我正在做一个金鱼游戏。有四名球员。每当我尝试检查初始对时,就会得到一个java语言异常越界错误。错误指向if语句,但我不知道如何修复代码 代码如下: public void initialPairs() { for (int index1 = 4; index1 >= 0; index1--) { for (int index = 0; index <= 3; index++) { if (hand.get

我正在做一个金鱼游戏。有四名球员。每当我尝试检查初始对时,就会得到一个java语言异常越界错误。错误指向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);
                }
            }
        }

    }
public void initialPairs(){
对于(int index1=4;index1>=0;index1--){

对于(int index=0;index而言,问题在于您假设手牌有五张牌,而且,在移除一对牌后,您不会调整索引。最后,当您找到一对牌时,您希望立即打破内环。请尝试以下操作:

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

}
public void initialPairs(){
对于(int index1=hand.getSize();index1>0;index1--){
对于(int-index=0;index
在代码方面,你到底想做什么?我不想弄明白你在想什么。假设每一手牌都有编号为0到3的牌,你在index1上的循环从4开始,所以hand.get(index1)=hand.get(4)将失败。当我使用此代码时,它在以下行返回java.lang.indexOutOfBoundsException:
if(hand.get(index1.getRank()=+hand.get(index.getRank())
@MCsuchNsuch-Hm。也许外部循环应该从
hand.getSize()-1
(这取决于
get()
getSize()的方式)
已实现,但我发布的代码可能是错误的。)。如果这不能解决问题,您可以尝试打印
index
index1
的值序列,以查看触发异常的值。好的,我们最近没有遇到错误,所以我想说您得到了正确的答案。此外,错误表明index1与大小相同。我们已经解决了ed各种各样的-1和东西…:/但是非常感谢您的尝试!!!!