我有 2 个 for 循环,一个嵌套在另一个循环中。它们循环遍历按钮的 2D 数组,以获取使用动作侦听器单击的每个按钮的源。
找到按钮后,我将按钮的位置/数组索引传递给外部方法。但是,当从按钮数组中找到按钮时,第一个 for 循环将其终止条件评估为 FALSE,但仍会增加 i 的值。导致一个错误。我的代码在标准操作执行方法中,“事件”是 ActionEvent。button[][] 是一个定义为实例变量的 JButton 数组。它的大小为 10 x 10,并且已添加到面板中。
int i = 0; //this will loop through the columns in the array
int j = 0; //loop through the rows
boolean locatedSource = false; //allows me to escape both loops
for(i = 0; !(locatedSource) && i < buttons.length; i++) //problem here, when i < buttons.length is FALSE i still gets incremented, leading to an off by one error
{
for(j = 0; !(locatedSource) && j < buttons.length; j++)
{
if(event.getSource() == buttons[i][j])
{
locatedSource = true;
break;
}
}
}
//do stuff with i and j in another method. Leads to array out of bounds error / off by one error
}
我应该提到,我不想通过使用标签来解决这个问题,他们似乎不鼓励。