我有一个程序可以扫描包含足球比分的文件,例如:
Leeds : 1 : Manchester City : 2
Manchester City : 3 : Chelsea : 1
我目前正在按行扫描它,然后通过以下方式将其拆分:但是我想在不重复的情况下创建团队打印 即。
Manchester City total goals = 5
Chelsea total goals = 1
Leeds City total goals = 1
有没有办法,我可以做到这一点,而无需硬编码团队名称。所以它只是扫描一个文件并选择团队但只有一次。分数在这里并不重要我只是以它们为例,团队名称是我想要清晰打印的。
我试过了:
While (file.hasNext()){
String line = file.nextLine();
String[] word = line.split(":");
System.out.println(teamname+" total goals ="+goals );
}
答案 0 :(得分:1)
不是立即打印目标,而是将它们存储在Map中:
private Map<String, Integer> goalCounts = new HashMap<>();
private void addGoals(String teamName, int numGoals) {
if (goalCounts.containsKey(teamName)) {
goalCounts.put(teamName, goalCounts.get(teamName) + numGoals);
}
else {
goalCounts.put(teamName, numGoals);
}
}
打印出总数:
for (Map.Entry<String, Integer> teamGoalsEntry : goalCounts.entrySet()) {
System.out.println(teamGoalsEntry.getKey() + " total goals=" + teamGoalsEntry.getValue());
}
您也可以使用AtomicInteger更新目标,而不是覆盖Map值。