-2

我下面的代码似乎没有编译,我似乎得到了 9 个不同的错误,请任何人都可以看看我的代码并发布可以使其正确运行的修改?谢谢

class MineFinderModel {
    public static int MINE_SQUARE = 10;
    public static int EMPTY_SQUARE = 0;

    int num_of_cols;
    int num_of_rows;
    int[][]
        the_minefield;

    public MineFinderModel(int n_cols, int n_rows) {
        num_of_rows = n_rows;
        num_of_cols = n_cols;
        the_minefield = new int[num_of_cols][num_of_rows];
    }

    public boolean addMine(int thisCol, int thisRow) {
        if (thisCol >= n_cols || thisRow >= n_rows)
            return false;
        if (the_minefield[thisCol][thisRow] == MINE_SQUARE)
            return false;
        the_minefield[thisCol][thisRow] = MINE_SQUARE;
        return true;
    }
    public int getValue(int thisCol, int thisRow) {
        if (thisCol >= n_cols || thisRow >= n_rows)
            return false;
        return the_minefield[thisCol][thisRow];
    }
    public void addMinesToCorners() {
        the_minefield[0][0] = MINE_SQUARE;
        the_minefield[0][n_rows - 1] = MINE_SQUARE;
        the_minefield[n_cols - 1][0] = MINE_SQUARE;
        the_minefield[n_cols - 1][n_rows - 1] = MINE_SQUARE;
    }
}
4

3 回答 3

1

几件事情要看:
1。你还没有正确定义n_colsn_rows变量。我猜你想使用num_of_colsandnum_of_rows而不是n_rowsand n_cols
2.getValue函数假设返回int。
3. 你没有 Eclipse 或任何其他 IDE 吗?

于 2013-03-11T11:28:01.123 回答
1

请使用下面的编辑代码。

您的错误是构造函数中定义的参数被用作错误的类级别变量。变量的范围不正确。

同样在方法中: getValue 您希望它返回 int ,然后在方法的第二行中返回 false ,这是布尔值,因此是编译问题。

我已将其更改为返回 0 相同。(检查逻辑是否不受干扰。)

我也编译了。

class MineFinderModel {
    public static int MINE_SQUARE = 10;
    public static int EMPTY_SQUARE = 0;

    int num_of_cols;
    int num_of_rows;
    int[][] the_minefield;

    public MineFinderModel(int n_cols, int n_rows) {
        num_of_rows = n_rows;
        num_of_cols = n_cols;
        the_minefield = new int[num_of_cols][num_of_rows];
    }

    public boolean addMine(int thisCol, int thisRow) {
        if (thisCol >= num_of_cols || thisRow >= num_of_rows)
            return false;
        if (the_minefield[thisCol][thisRow] == MINE_SQUARE)
            return false;
        the_minefield[thisCol][thisRow] = MINE_SQUARE;
        return true;
    }

    public int getValue(int thisCol, int thisRow) {
        if (thisCol >= num_of_cols || thisRow >= num_of_rows)
            return 0;
        return the_minefield[thisCol][thisRow];
    }

    public void addMinesToCorners() {
        the_minefield[0][0] = MINE_SQUARE;
        the_minefield[0][num_of_rows - 1] = MINE_SQUARE;
        the_minefield[num_of_cols - 1][0] = MINE_SQUARE;
        the_minefield[num_of_cols - 1][num_of_rows - 1] = MINE_SQUARE;
    }
}
于 2013-03-11T11:30:13.383 回答
0

不要在您的,方法中使用n_colsand ,而是使用, 。因为并且在您的其他方法中无法访问。n_rowsaddMinegetValueaddMinesToCornersnum_of_rowsnum_of_colsn_rowsn_rows

另一件事是,在您的以下方法中,您必须返回int而不是boolean

public int getValue(int thisCol, int thisRow) {
    if (thisCol >= num_of_cols || thisRow >= num_of_rows)
        return false; //you should return int here
    return the_minefield[thisCol][thisRow];
}
于 2013-03-11T11:30:52.723 回答