JAVA:使用另一个类的方法

时间:2014-03-16 22:29:30

标签: java oop instantiation

我是一名初学程序员,为JAVA课程创建战舰游戏。我遇到了一个问题,我无法使用我在项目主类的一个类中创建的方法。 BattleshipBard.java:

Public class BattleshipBoard {

   char[][] playerBoard = new char[10][10];
   char[][] opponentBoard = new char[10][10];

public void initBoard(char[][] board)
   {
      for(int x = 1; x < 10; x++)
      {
            for(int i = 1; i < 10; i++)
            {
               board[x][i] = 'w';
            }
      }
   }

   public String toString(char[][] board)
   {
      String s  = "";
      for(int x = 1; x < 10; x++) {
         for(int i = 1; i <10; i++) {
            s += board[x][i];
            }
         s += "/n";
      }
   return s;
   }
}

Battleship.java:

public class Battleship 
{
   public static void main(String[] args)
   {
      String win;
      BattleshipBoard[][] player = new BattleshipBoard[10][10];
      BattleshipBoard[][] opponent = new BattleshipBoard[10][10];

      initBoard(player[10][10]);
      win = toString(player[10][10]);
   }
}

我尝试运行时遇到此错误。我不确定为什么它没有在我的BattleshipBoard.java文件中找到该方法。

Battleship.java:8: error: cannot find symbol
      initBoard(player[10][10]);
      ^
  symbol:   method initBoard(BattleshipBoard)
  location: class Battleship

谢谢。

3 个答案:

答案 0 :(得分:0)

BattleshipBoard bs = new BattleshipBoard();

以上创建了一个名为bs的实例 顺便说一句,我注意到Public应该是小写的公共

接下来的事情是,当你实例化实例bs时,调用方法initBoard(),如bs.initBoard()

你告诉实例调用该函数,函数是initBoard(它也叫做方法,方法/函数meh!都一样)

另外(new)是一个关键字,旨在允许创建一个新实例BattleshipBoard()而你没有在类中显式创建BattleshipBoard()是自动生成的,它与类同名但是实际上,它被称为构造函数方法,构造函数方法采用类的名称,但可以包含诸如

之类的参数
public BattleshipBoard(int width, int height){

}

最后,我上面的人建议将其设为静态,静态允许方法或字段全局可用,这有其优点和缺点。

答案 1 :(得分:0)

你已经创建了一个类BattleshipBoard ..(这个类内部保存了板的数组)。但是在你的主要代码中,你正在装箱10x10 BattlshipBoards(每个都持有游戏状态)。

重新检查您班级的作用。让BattleshipBoard保持数组,不要在类之外引用它们。提供BattleshipBoard中的方法来初始化游戏,让对手玩等等。

答案 2 :(得分:0)

initBoard()属于BattleshipBoard类,你应该从你的对象中调用它,如下所示:

player.initBoard();
opponent.initBoard();