我目前正在开展学生项目,每次收到此错误时都会: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;
}
}
}
}
答案 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错误