提问人:Paradox 提问时间:10/22/2023 更新时间:10/23/2023 访问量:62
Java 在对象内创建对象
Java creating Objects inside an Object
问:
我对 Java 很陌生,我想自己编写国际象棋。已经为此创建了一个领域、玩家和棋子类,只有棋子、玩家和主类对此很重要。所以基本上我想在 Player 的对象中创建一个 Piece 对象。试过了,没有用:,)
基本上,我为 Piece 和 Player 定义了构造函数方法。使用 Main,我创建了对象 Player 1 和 2。然后我想尝试是否可以使用创建 Piece 对象的方法在 Player 类/对象中创建一个 Piece 对象。利用这一点,我想直接将棋子分配给玩家。在这种情况下,这里只有一个棋子。 顺便说一句,我只从文件中粘贴了最重要的东西,而不是与字段或 smth 相关的内容。
class Player {
public int id, piecesleft, l1, l2;
public String name;
public Player(int idin, int plin, String namein) {
id = idin;
piecesleft = plin;
name = namein;
if (id == 1) {
l1 = 7;
l2 = 6;
} else {
l1 = 0;
l2 = 1;
}
};
public void piecegen() {
Piece pawnA = new Piece('p', true, l2, 0);
};
};
class Piece {
public char type;
public boolean status;
public int pos1, pos2;
public Piece(char typein, boolean statusin, int pos1in, int pos2in) {
type = typein;
status = statusin;
pos1 = pos1in;
pos2 = pos2in;
};
};
public class Main {
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("\nSpieler 1 - Name: ");
String name1 = scan.nextLine();
Player p1 = new Player(1, 16, name1);
System.out.print("Spieler 2 - Name: ");
String name2 = scan.nextLine();
Player p2 = new Player(2, 16, name2);
p1.piecegen();
p2.piecegen();
System.out.println(p1.pawnA.type);
};
};
基本上告诉我“pawnA无法解析或不是字段”:,)
答:
是的,我现在正在回答我自己的问题,因为我找到了解决方案。也许它会帮助其他一些新手:) 就像我说的,我想做的是在对象内部创建对象。意识到这并不能真正奏效,我尝试了其他方法并找到了解决方案。在这种情况下,我想创建棋子并直接将它们与玩家联系起来。我只是不得不想一点不同。发现,我可以在 Player 类中为 Pieces 类创建一个对象数组:
public Piece piece[] = new Piece[16];
这就是我在 Player 类的开头粘贴的内容,使数组成为播放器的一部分。public 之后的“Piece”只是声明数组的类型。它基本上告诉程序这是来自“Piece”类的对象数组。 “piece[]” 是数组的名称。通过“new Piece[16]”,我们告诉程序 Array 中可以有多少个 “Piece.最后,我只是在 player 类中编辑了我的“piecegen()”方法,以将数组内特定位置的值设置为具有我想要的参数的 piece 对象。方法示例:
this.piece[0] = new Piece('p', true, l2, 0);
现在,我可以通过访问数组和数组内的点来访问 main 方法中的对象,并添加“.type”矿石,就像任何普通对象一样。我的 Main 方法的示例:
System.out.println("| Type: " + p1.piece[0].type);
这将输出“p”,因为它是一个棋子:) 感谢您的评论,如果此答案中的任何内容有误,请纠正我。最后,我仍然不是专家;)
评论
pawnA
Player
piecegen()
Player
类,则没有字段。函数或其他任何地方的变量都与它无关。 不存在。就这么简单。@HeathMorganpawnA
main()
p1.pawnA
pawnA
main
id, piecesLeft, l1, l2, name