Java ArrayIndexOutOfBound

时间:2015-06-02 12:37:25

标签: java arrays exception indexoutofboundsexception

我目前正在开展学生项目,每次收到此错误时都会:ArrayIndexOutOfBoundsException: 7。有人可以看到它发生的位置以及我如何解决它?我知道代码看起来很乱,但它只适合我。数组的大小为7。

public void actionPerformed(ActionEvent e) {
    if(c >= Playerlist.length) {
        if(c >= wuerfelsummen.length) {
            c = 0;
        }
    }

    if(wuerfelsummen[c] == null) {
        c++;
    }

    wuerfelsummen[c].setText(lbl_summe.getText());
    pot.setCurrentPlayer(Playerlist[c]);

    if(c >= Playerlist.length) {
        c = 0;
    } else {
        c++;

        //ARRAY_INDEX_OUT_OF_BOUNDS ERROR !!!!!!!!!!!!!!!!!!!!
        while(wuerfelsummen[c] == null) {
            if( c <= Playerlist.length) {
                c++;
            } else {
                c = 0;
            }
        }
    }
}

4 个答案:

答案 0 :(得分:0)

现在试试,你的比较不好,循环:

   public void actionPerformed(ActionEvent e) {
        if(c >= Playerlist.length)
        {
            if(c >= wuerfelsummen.length)
            {
                c = 0;
            }
        }
        System.out.println(c);
        if(wuerfelsummen[c] == null)
        {
            c++;
        }

        System.out.println(c);


        wuerfelsummen[c].setText(lbl_summe.getText());
        lbl_summe.setText("0");
        lbl_summe.setForeground(Color.black);
        btnWerfeln.setEnabled(true);
        pot.setCurrentPlayer(Playerlist[c]);
        if(c >= Playerlist.length)
        {
            c = 0;
        }
        else
        {
            c++;

            //ARRAY_INDEX_OUT_OF_BOUNDS ERROR !!!!!!!!!!!!!!!!!!!!
            while(wuerfelsummen[c] == null)
            {
                if( c < Playerlist.length-1)
                {
                    c++;
                }
                else
                {
                    c = 0;
                    //ermittleGewinner(wuerfelsummen);
                }

            }
        }
        System.out.println(c);
        //ermittleGewinner(wuerfelsummen);



    }
});

答案 1 :(得分:0)

目前,您正在增加数组末尾的索引,导致程序超出数组的范围。因此你应该改变......

if(c <= Playerlist.length)
{
    c++;
}

...到...

if(c < Playerlist.length)
{
    c++;
}

答案 2 :(得分:0)

if(c >= Playerlist.length)
        {
            c = 0;
        }
        else
        {
            c++;

            //ARRAY_INDEX_OUT_OF_BOUNDS ERROR !!!!!!!!!!!!!!!!!!!!
            while(wuerfelsummen[c] == null)

您首先检查c是否最多是数组的最后一个索引,然后 将其递增1,可能会超过该限制。

答案 3 :(得分:0)

此字符串中的问题

if(c&lt; = Playerlist.length){

c = Playerlist.length

您将获得ARRAY_INDEX_OUT_OF_BOUNDS错误