Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当试图将网格上的所有特定正方形变成深蓝色时,如何停止出错_Java_If Statement_Boolean - Fatal编程技术网

Java 当试图将网格上的所有特定正方形变成深蓝色时,如何停止出错

Java 当试图将网格上的所有特定正方形变成深蓝色时,如何停止出错,java,if-statement,boolean,Java,If Statement,Boolean,我不知道如何解决这个问题。我的程序基本上是在32乘32的网格上随机生成绿色块(它不会填充整个网格)。如果我点击一个空白点,它会变成蓝色,并且应该扩散到所有其他空白点,但不会改变绿色(陆地)。如果我点击一个连接到屏幕边缘的区域,它将变成深绿色,并扩散到所有其他空白点。我的问题是,如果我点击一个连接到屏幕边缘的正方形,我只会得到一个错误,虽然它会扩散,但并不总是扩散到每个点,而且颜色也不一样 这是使它传播的代码 void findLakes(int x, int y) { if (b

我不知道如何解决这个问题。我的程序基本上是在32乘32的网格上随机生成绿色块(它不会填充整个网格)。如果我点击一个空白点,它会变成蓝色,并且应该扩散到所有其他空白点,但不会改变绿色(陆地)。如果我点击一个连接到屏幕边缘的区域,它将变成深绿色,并扩散到所有其他空白点。我的问题是,如果我点击一个连接到屏幕边缘的正方形,我只会得到一个错误,虽然它会扩散,但并不总是扩散到每个点,而且颜色也不一样

这是使它传播的代码

    void findLakes(int x, int y) {
    if (board[x][y] != EMPTY)
        return;
    board[x][y] = LAKE;
    if (y > 0 && board[x][y - 1] == EMPTY)
        findLakes(x, y - 1);
    if (y < GRID - 1 && board[x][y + 1] == EMPTY)
        findLakes(x, y + 1);
    if (x > 0 && board[x - 1][y] == EMPTY)
        findLakes(x - 1, y);
    if (x < GRID - 1 && board[x + 1][y] == EMPTY)
        findLakes(x + 1, y);
    if (x == 0) findOceans(x,y);
}
// if (... square is on the edge of the board) findOceans(x,y);
void findOceans(int x, int y) {
            if (board[x][y] == LAKE) board [x][y] = OCEAN;

            if (((y > 0) && (board[x][y - 1] == LAKE)) ||  (board[x][y - 1] == EMPTY ))
                findOceans(x, y - 1);
            if (((y < GRID - 1) && (board[x][y + 1] == LAKE)) ||  (board[x][y + 1] == EMPTY))
                findOceans(x, y + 1);
            if (((x > 0) && (board[x - 1][y] == LAKE)) || (board[x][x - 1] == EMPTY))
                findOceans(x - 1, y);
            if (((x < GRID - 1 ) && (board[x + 1][y] == LAKE)) ||  (board[x][x + 1] == EMPTY))
                findOceans(x + 1, y);
}

我的描述有点让人困惑,所以如果你有任何问题,我可以试着回答

我只是得到了一个错误——那么错误是什么呢。我猜您会遇到IndexOutOfBounds类型错误。我确信你得到了一个带有错误的堆栈跟踪。因此,找到导致错误的语句,然后修复索引。
void makeRandomMap() {
    int i, j;
    boolean done = false;
    int landTiles = 0;
    while (!done) {
        i = (int) (Math.random() * GRID);
        j = (int) (Math.random() * GRID);
        if (board[i][j] == EMPTY) {
            board[i][j] = LAND;
            landTiles++;
            if (landTiles == NUM_LAND)
                done = true;
        }
    }
}