0

所以我必须为一个任务写一个扫雷游戏。如果我为 Board 创建了一个类,其中包含两个 2D 数组,一个用于 board 值,一个用于保存用户是否已点击或未点击。我用两个二维数组的参数编写了方法。我将如何在我的主类中调用这些数组?

public class Board {

    int x;
    int y;
    public char[][] board;
    public char[][] reveal;

    Board(int x, int y){
        board = new char[x][y];
        reveal = new boolean[x][y];
}

    }

public class Mine{

    public static void main(String[] args){

        Board gameboard;
        gameboard = new Board(5, 5);

                   ???

        Board.printBoard(board, reveal);

    }
}


public void printBoard(char[][] board, boolean[][] test){

        for(int i=0; i<=board.length; i+=1){
            for(int j=0; j<board[i].length; j+=1){
                if (test[i][j]==true){
                System.out.print(board[i][j]);
                }
                else {
                    System.out.print('?');
                }
            }
            System.out.println();
        }

    }
4

5 回答 5

1

我将如何在我的主类中调用这些数组?

您不会“调用”数组。你调用方法。如果要访问类的实例变量,则需要提供访问器方法,即“获取”和“设置”实例变量的方法。

于 2013-04-20T01:58:31.433 回答
0

通过使用以下代码,您可以像其他人建议的那样轻松访问方法。

System.out.print(gameboard.board[i][j]);

您可以像许多人建议的那样合并封装。

但是,我还建议您更简单地实施它,如果您被允许完成作业,可以在一个班级内进行。

这与更少的代码一样有效,而且 IMO 也很容易理解。

public class Board {
    private int x;
    private int y;
    private char[][] board;
    private boolean[][] reveal;

    public static void main(String[] args) {
        Board gameboard = new Board(5, 5);
        gameboard.printBoard();
    }

    public Board(int x, int y) {
        this.x = x;
        this.y = y;
        board = new char[x][y];
        reveal = new boolean[x][y];
    }

    public void printBoard() {
        for (int i = 0; i < board.length; i += 1) {
            for (int j = 0; j < board[i].length; j += 1) {
                if (reveal[i][j] == true) {
                    System.out.print(board[i][j]);
                } else {
                    System.out.print('?');
                }
            }
            System.out.println();
        }
    }

    public class Mine {

    }
}
于 2013-04-20T02:39:35.753 回答
0

由于您将boardreveal属性声明为公共,您可以使用gameboard.boardand访问它们的值gameboard.reveal
然而,这是一个非常非常糟糕的方法。封装
因此,您应该为每个类属性声明 getter 和 setter,x并通过以下方式访问其值:objectName.getX()

于 2013-04-20T02:04:01.443 回答
0

在 main 方法中实例化板类的实例后,您可以按如下方式访问它们(例如):

Board gameboard = new Board(5,5);
for (int i = 0; i < 5; i++) {
  for (int j = 0; j < 5; j++) {
    System.out.print(gameboard.board[i][j]);
  }
}

等等

使用私有成员和访问器方法是一种更好的方法,但肯定不是必需的。

于 2013-04-20T02:04:27.633 回答
0

您只需键入 gameboard.board 即可获取存储在您的 Board 对象中的“board”。

于 2013-04-20T02:05:08.177 回答