我是一名初学程序员,为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
谢谢。
答案 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();