You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在循环中为每个创建的Player对象设置不同命名(如player1、player2)

问题解答

首先明确:Java里没办法在运行时动态生成像player1、player2这种自定义名称的变量,因为变量名是编译阶段就确定好的,不能在循环里动态创建。

但你可以用集合来存储这些Player对象,实现类似“按序号访问”的需求,常用的有两种方式:

方式一:用ArrayList存储(推荐)

用List来保存所有Player对象,之后可以通过索引(从0开始)访问对应玩家,索引+1就是你想要的player编号。修改你的代码如下:

// 先声明一个List来存放所有玩家对象
List<Player> players = new ArrayList<>();
Scanner scan = new Scanner(System.in);

for (int i = 0; i < playerNumber; i++) {
    System.out.println("PLAYER " + (i+1) + "'S NAME IS:");
    String playerName = scan.nextLine();
    // 创建Player对象并加入List
    Player player = new Player(playerName);
    players.add(player);
}

// 之后访问玩家的示例:比如获取第1个玩家(索引0)
Player player1 = players.get(0);
// 获取第2个玩家(索引1)
Player player2 = players.get(1);

方式二:用HashMap存储(按自定义key访问)

如果你非要用类似"player1"这样的字符串来关联对象,可以用Map,把字符串作为key,Player对象作为value:

Map<String, Player> playerMap = new HashMap<>();
Scanner scan = new Scanner(System.in);

for (int i = 0; i < playerNumber; i++) {
    System.out.println("PLAYER " + (i+1) + "'S NAME IS:");
    String playerName = scan.nextLine();
    String key = "player" + (i+1);
    Player player = new Player(playerName);
    playerMap.put(key, player);
}

// 之后访问玩家的示例:通过key获取
Player player1 = playerMap.get("player1");
Player player2 = playerMap.get("player2");

总结:动态变量名在Java里行不通,用集合存储是最合理的解决方案,ArrayList更适合按顺序访问的场景,HashMap适合按自定义标识访问的场景。

内容的提问来源于stack exchange,提问作者Gabs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:40:38