所以我有一个文本输入文件,如下所示:
011,AgeOfEmpires,RTS,156
022,Oblivion,RPG,88
033,CallOfDuty,FPS,2
044,Halo,FPS,1
(格式为ID,名称,类型,已售出的副本)
使用扫描仪读取信息并将其放入数组列表中。代码在这里:
File temp = new File("file.txt");
Scanner file = new Scanner(temp);
List<Game> games = new ArrayList<Game>();
while(file.hasNextLine())
{
String data = file.nextLine();
String[] details = data.split(",");
String number = details[0];
String name = details[1];
String genre = details[2];
int price = Integer.parseInt(details[3]);
Game g = new Game(number, name, genre, price);
games.add(g);
}
(另请注意,在我的程序中,我有一个带有getter和setter的类,可以获取数组中的信息)
问题是我不知道如何比较某些决定的数据。
例如,如果一个类型的销售量超过100份,该程序将发出消息。我的直觉说我会编写这样的东西:
If (soldRTS > 100) System.out.println("RTS games are popular lately");
然而,这不起作用,因为类型的价值将是“动态的”或“可变的”(不确定如何调用它)。也就是说,输入文件的作者可以具有任何类型的类型,并且他们的所有销售都将是不同的。
我不知何故需要“动态”处理数组列表中的信息以进行这些决策。我知道必须有一些方法来做到这一点,但我真的无法找到如何。我知道它必须在某个地方在线,但由于我不知道这个过程甚至被称为什么我在搜索它时遇到了麻烦。有人可以解释一下这是怎么做的,或者至少指出我正确的方向?
非常感谢,如果您需要更多代码,我可以编辑这篇文章。我认为所需的一切都已包括在内。
答案 0 :(得分:0)
总结一下,你的问题是你需要一种方法,对于任何给定的任意类型,跟踪计数,如果你事先知道类型,你只知道如何做到这一点。试试Map
。更具体地说,是Map<String, Integer>
。在大多数情况下,使用Map
所需的实现类可能是HashMap
。
此地图中的键将是流派,而值将是该流派的总销售额。对于每个游戏,首先检查地图containsKey()
是否类型;如果是,get()
到目前为止,添加当前游戏的销售额,并将put()
新值重新加入;如果它没有,只需put()
当前游戏的销售数量,因为它是该类型的第一个。
当您为所有游戏完成此操作后,您可以使用地图entrySet()
浏览所有类型的整个列表及其销售数量。