我正试图在控制台上使用Java进行二十一点游戏。我正处于需要决定每轮参赛者数量的阶段。在每一轮开始之前,控制台要求用户键入将在此轮中玩多少玩家并创建与该数字对应的玩家对象。限制是从0到5.我需要弄清楚我将如何根据输入创建1~5个Player对象。如何在java中动态创建对象的实例?我知道你可以做转换语句但是想知道是否还有其他方法。
答案 0 :(得分:2)
如果在循环中执行new Player()
,它将生成与执行循环一样多的实例。在你的情况下,问题很可能不是如何实际生成玩家,而是如何记住它们供以后使用。您可以通过将它们存储在集合或数组中来实现:
List<Player> players = new ArrayList<>();
for(int i=0;i<number;i++) {
players.add(new Player(i));
}
在这种情况下,我会生成与number
一样多的玩家,并将实际数字传递给Player实例的构造函数。
如果你真的想要生成不同类的实例(例如所有实现Player接口的实例),则必须执行此硬编码(如您提到的switch语句)或使用反射。在后一种情况下,您需要实际类名的数组/集合或规则如何生成它们。但我真的认为让所有来自同一班级的球员都可以走了。
答案 1 :(得分:1)
在Java中创建新对象通常使用“new”关键字。如果您已经定义了您的Player类,那么它将是这样的:
Player player1 = new Player();
如果您想区分玩家,可以使用例如Player类的“name”属性。并添加方法来设置和获取该属性值。他们被称为getter和setter:
public class Player {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
现在,让我们假设玩家的数量是变量“numPlayers”。我们现在可以像numPlayers一样创建尽可能多的玩家。我们将使用列表来存储这些玩家:
ArrayList<Player> players = new ArrayList<Player>();
for (int i = 1; i <= numPlayers; i++) {
Player p = new Player();
p.setName("Player " + i);
players.add(p);
}
现在你的玩家都在“玩家”名单中。要获得每个玩家,您可以使用
Player player1 = players.get(0); // get first player
Player player2 = players.get(1); // get second player, etc...
答案 2 :(得分:0)
for(int i=1; i=>numberOfPlayers; i++; ){
myListOfPLayers.add(new Player());
}