将对象放置在正确位置(Java)
我有一个简单的测试将对象放置在正确位置(Java),java,Java,我有一个简单的测试 public class Game { public static void main(String[] args) { // TODO Auto-generated method stub Board b1 = new Board(); Knight bk = new Knight(Player.BLACK); b1.placePiece(0, 0, bk); System.out.
public class Game {
public static void main(String[] args) {
// TODO Auto-generated method stub
Board b1 = new Board();
Knight bk = new Knight(Player.BLACK);
b1.placePiece(0, 0, bk);
System.out.println(b1.getPiece(0, 0));
}
}
这应该打印出“bk”,因为它被放置在板b1的(0,0)上。但实际上它返回null
我的董事会课程如下所示:
getPiece应该返回[x][y]上的片段,但当然不会,因为[x][y]上没有任何内容。我知道出了什么问题,但我不知道如何解决这个问题
我的作品课看起来像:
public abstract class Piece {
Player color;
int x, y;
Piece(Player color){
this.color = color;
}
...
}
因此,我不知道如何使board[x][y]有一个正确的值,即正确的工件对象
编辑:
编辑2:
public class Board {
....
}
您需要初始化电路板
board = new Piece[rows][cols]
考虑在构造函数中执行此操作
更新:
要获得名称,您应该将成员名称添加到工件类中
abstract class Piece {
java.awt.Color color;
String name;
int x, y;
Piece(java.awt.Color color, String name) {
this.color = color;
this.name = name;
}
@Override
public String toString() {
return "Piece{" +
"color=" + color +
", name='" + name + '\'' +
", x=" + x +
", y=" + y +
'}';
}
}
class Knight extends Piece {
Knight(Color color, String name) {
super(color, name);
}
@Override
public boolean equals(Object obj) {
Knight that = (Knight) obj;
return this.color == that.color && this.name.equals(that.name);
}
}
重写字符串将导致
System.out.println(new Knight(Color.BLACK, "Robin Hood"));
印刷
Piece{color=java.awt.Color[r=0,g=0,b=0], name='Robin Hood', x=0, y=0}
你能给我们看一下你的
placePiece
方法的代码吗?以及你是如何初始化电路板的。编辑@IddoE你说的是Board的构造函数吗?我没有添加那个。@user6792790在类板中,你们初始化板吗?board=新的[rows][cols]?谢谢,但返回board[x][y];在getPiece上,方法实际上并不返回对象的名称。我怎样才能让它返回对象的名称?@user6792790-hmm。。“物体名称”是什么意思?它返回对象的reference@user6792790在Java中,返回变量名并不是你真正能做的事情,你想让它返回“bk”?所以当我做Knight bk=new Knight(Player.BLACK)时;还有getPiece,我希望它能返回bk。