有没有办法让引用名称成为java中的输入?

时间:2015-02-16 20:49:11

标签: java reference user-input

我一直在努力为自己和一些朋友建立一个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.

如果有办法做我想在这里做的事情,我不知道怎么做。如果没有办法做到这一点,我应该将那些不完全模糊/不可读的参考名称称为变量?

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

1 个答案:

答案 0 :(得分:0)

也许地图数据结构会更好地为您服务。看看这段代码,看看它是否对你有帮助。您可以将标识符存储为游戏的关键和参考,作为值。注意:如果您输入两次相同的密钥,则重写其值。

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"));