- 已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
19小时前关门了。
Improve this question
一只蚂蚁想要在叶子单元之间移动,叶子是一个二维数组,leaf [width][height],蚂蚁的起始位置是随机的,但在这个问题中它不是一个重要的东西,我有一个函数,它为蚂蚁生成新的点(x,y),并检查点(x,y)是否为:#规则1-高于或等于0 #规则2-低于叶的宽度和高度
下面是我的代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Main {
public static void main(String[] args){
int width = 3, height = 4;
int newX, newY;
Random random = new Random();
int x = random.nextInt(height);
int y = random.nextInt(width);
int[][] leaf;
leaf = new int[width][height];
//Create the leaf
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
leaf[i][j] = random.nextInt(11); // Set leaf cells values
}
}
for (int dx = -1; dx <= 1; dx++) {
for (int dy = -1; dy <= 1; dy++) {
if (dx == 0 && dy == 0) {
continue;
}
newX = x + dx;
newY = y + dy;
if (newX >= 0 && newX < height && newY >= 0 && newY < width) //CONDITION 1 {
if (leaf[x][y] < leaf[newX][newY] //CONDITION 2
&& leaf[newX][newY] > 0) {
//do something
}
}
}
}
}
}
问题是,当我调试代码时,我发现即使有CONDITION 1来检查2个规则(#rule 1和#rule 2),Java仍然会看到CONDITION 2,并在newX或newY之一无效时抛出ArrayIndexOutOfBoundsException。
1条答案
按热度按时间3bygqnnd1#
比较newX和高度,但是在需要宽度的索引中使用它,对于newY则相反。
相反,newX需要根据宽度进行检查,newY需要根据高度进行检查。