如何在java中使用变量从类里面的方法

问题描述:

所以我必须为任务编写一个扫雷游戏。如果我为董事会制作了一个课程,其中包含两个2D数组,一个用于棋盘值,另一个用于确定用户是否已经点击或未点击。我用两个2D数组的参数编写了这些方法。我将如何在主类中调用这些数组?如何在java中使用变量从类里面的方法

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(); 
     } 

    } 

我怎么会叫我的主类的阵列?

您不'调用'数组。你调用方法。如果你想访问一个类的实例变量,你需要提供访问方法,即'get'和'set'实例变量的方法。

+0

建议使用访问器方法,但不是必需的。由于他的数组是公开的(未推荐),他*可以*通过实例简单地引用它们。 – 2013-04-20 02:00:52

+0

我试过这个......不知道如何在这里设置获取方法 public char [] [] getBoard(Board board){ \t \t return char [] [] board; \t} – user2259610 2013-04-20 02:04:26

+0

我将如何通过实例引用它? – user2259610 2013-04-20 02:05:40

既然你宣布boardreveal属性为公共你可以访问使用gameboard.boardgameboard.reveal它们的值。
但是,这是一个非常非常糟糕的方法。 Encapsulation
所以,你应该申报的getter和setter每个类属性x,并访问其值:objectName.getX()

后,你在你的主要方法实例化你的板类的实例,你会(例如)以下方式访问它们:

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]); 
    } 
} 

使用私有成员和存取方法是一个更好的办法一个,但肯定不是一个要求。

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

您可以像使用以下代码一样轻松地访问其他人的建议。

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 { 

    } 
}