Java 在for循环中生成多个不同的命名对象

Java 在for循环中生成多个不同的命名对象,java,constructor,Java,Constructor,我正在制作一个命运之轮游戏,我想包括一个功能,用户输入有多少玩家,for循环中的构造函数生成那么多玩家。我只是不知道当他们说需要多少球员时,我会怎么做这些东西 游戏者构造器 public Player(String n) { money = 0.0; name = n; } 问题 public static void main(String[] args) { Scanner kb = new Scanner(System.in); int playerAmou

我正在制作一个命运之轮游戏,我想包括一个功能,用户输入有多少玩家,for循环中的构造函数生成那么多玩家。我只是不知道当他们说需要多少球员时,我会怎么做这些东西

游戏者构造器

public Player(String n) {
    money = 0.0;
    name = n;
}
问题

public static void main(String[] args) {
    Scanner kb = new Scanner(System.in);
    int playerAmount = 0;
    do {
        if(playerAmount > 5) System.out.println("Thats too many.");
        System.out.print("How many players(max 5): ");
        playerAmount = kb.nextInt();
    } while(playerAmount > 5 || playerAmount == 1);

    for(int i = 1; i <= playerAmount; i++) {
        System.out.print("Player " + i + " name: "); 
        String name = kb.next(); // name for the construction of player
        Player player1 = new Player(name); // where i want to construct differeing number of different objects
    }

}
publicstaticvoidmain(字符串[]args){
扫描仪kb=新扫描仪(System.in);
int playerAmount=0;
做{
如果(playerAmount>5)System.out.println(“太多了”);
System.out.print(“有多少玩家(最多5名):”;
playerAmount=kb.nextInt();
}而(playerAmount>5 | | playerAmount==1);

对于(int i=1;i而言,简单的解决方案是将每个新玩家添加到列表中:

List<Player> players = new ArrayList<>();
for (int i = 0; i < playerCount; i++) {
    players.add(new Player(kb.next()));
}
List players=new ArrayList();
对于(int i=0;i
这可能有点太复杂了,但如果您使用的是Java 8,您也可以使用流惯用法来实现这一点:

List<Player> players = Stream.generate(kb::next)
    .map(Player::new).limit(playerCount).collect(Collectors.toList());
List players=Stream.generate(kb::next)
.map(Player::new).limit(playerCount).collect(Collectors.toList());

如果您对此不熟悉,这意味着使用
kb.next()生成字符串流
,使用
new Player
将其转换为播放器,将流限制为您想要收集到列表中的播放器数量。

您需要对象数组。将其放入类似数组的数据结构中。
player1
在每次迭代后立即丢失。对象没有名称——没有意义。变量有名称,但对象可以有名称分配给多个变量,因此假设您有名为Horace、Bill和Sharon的玩家变量,并且都分配给同一个对象,那么对象的“名称”是什么时候?同样,这没有意义。重要的是引用和属性,获取访问对象的方法的引用(可能是ArrayList或HashMap)以及对象类的字符串名称属性(如果希望将名称与对象关联)。