我一直在努力为自己和一些朋友建立一个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),我认为重复的标记要么是一个有趣的巨魔,要么是对我的问题的误解。
答案 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"));