有没有办法让参考名称成为 java 中的输入?

Is there a way to make reference names an input in java?

我一直在尝试为自己和几个朋友建立一个 Elo 风格的排名系统,这样我们就可以一起跟踪我们在游戏中的表现。但是我一直在为如何调用对玩家和游戏对象的引用以尽可能保持可读性而遇到一些麻烦。直观上,似乎对游戏的引用应该是游戏编号,对玩家的引用应该是玩家名。然而,由于每个游戏的细节都会改变,我无法将这些东西硬连接到代码中。那么,有没有办法让对象引用成为用户输入?

以下是我尝试过的一些让编译器对我大吼大叫的事情:

    Scanner input = new Scanner(System.in);
    Game input.next() = new Game();  //doesn't work

    String playername;
    for(int i = 0; i < numberOfPlayers; ++i){
        System.out.print("Player name: ");
        playerName = input.next();
        Player playerName = new Player();  //compiler still isn't happy
    }

    //then there's also this-
    String playerName = input.next();
    Player /* ????? */ = new Player(Playername);
    //it seems like a good idea at first, but it doesn't solve the problem at all.

如果有办法实现我在这里想要实现的目标,我不知道该怎么做。如果没有办法做到这一点,我应该如何称呼不完全 ambiguous/unreadable 参考名称的变量?

编辑:这个问题显然被标记为另一个问题的重复,该问题询问如何将 System.in 与扫描仪一起正确用于各种事物,不包括参考名称。由于这个问题问的是完全不同的事情(这个问题主要是问参考名称,而不是 System.in 或扫描仪),我认为重复标记要么是一个有趣的巨魔,要么是对我的问题的误解。

也许地图数据结构会更好地为您服务。看看这段代码,看看它是否对你有帮助。您可以将标识符存储为键,将对游戏或玩家的引用存储为值。注意:如果您输入同一个键两次,您将重写它的值。

Scanner input = new Scanner(System.in);

HashMap<String, Game> games = new HashMap<String, Game>();
HashMap<String, Player> players = new HashMap<String, Player>();

games.put(input.next(), new Game());
players.put(input.next(), new Player());

//do something with game and player properties

System.out.println(games.get("game 1"));
System.out.println(players.get("john"));