-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.および変数を正しく
定義していません。andの代わりにandを使いたいと思います。 2.関数は int を返すと仮定します。 3. Eclipse やその他の IDE を持っていませんか?n_colsn_rowsnum_of_colsnum_of_rowsn_rowsn_cols
getValue

于 2013-03-11T11:28:01.123 に答える
1

以下の編集されたコードを使用してください。

あなたの間違いは、コンストラクターで定義された引数が間違ったクラスレベル変数として使用されていたことです。変数のスコープが正しくありませんでした。

また、メソッド: getValue では、int が返されると予想され、メソッドの 2 行目ではブール値である 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_rowsます。とは他の方法ではアクセスできないためです。addMinegetValueaddMinesToCornersnum_of_rowsnum_of_colsn_rowsn_rows

もう1つ、次のメソッドでは、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 に答える