如何在满足条件时比较整数

时间:2014-12-31 10:01:18

标签: java arrays

我有一个程序,它读取一个包含足球队的文本文件,其中包含他们得分的目标数量我希望能够扫描特定团队的文本文件,然后计算目标得分等等等等等等等等。 。

public void totalGames()
    { 


        File inputfile = new File ("validtest.txt.txt");
        try{

            Scanner filescan = new Scanner(inputfile);
            //Map<String[], int[]> teams = new Map<>();
            HashMap<String,String> teamMap = new HashMap<String, String>();

            while(filescan.hasNext()){
            //  StrArray = aLine.split(separator);


                String[] teamKey = filescan.nextLine().split(" : ");


                teamMap.put(teamKey[0], teamKey[1]);





                }
            filescan.close();
            System.out.println(teamMap);

                }catch (FileNotFoundException e){


                }
                        I have managed to add only the teams to the map but it is making the teams equals to each other where as the team needs to be associated with the goals scored in that game.

Fulham : Liverpool : 1 : 2
Wigan Athletic : Leeds United : 2 : 2
Arsenal : Liverpool : 2 : 2

4 个答案:

答案 0 :(得分:0)

DataModel是关键字!

我建议创建一个DataModel

  • 找到新行
  • 解析模型
  • 将模型添加到arraylist
  • 检索用户的输入
  • 检查是否存在与用户输入具有完全相同值的模型
  • 如果是,则从模型中检索其他信息

如果用户输入了团队名称,请尝试通过contains()indexOf()方法查找包含完全相同团队的模型。

答案 1 :(得分:0)

您可以执行以下操作:

  • 使用以下详细信息创建一个新类:
    • teamName
    • oppnonent
    • 目标
    • otherGoals
    • 将equals与对手名字段定义为匹配
    • 的关键属性
  • 从文件中读取并将数据存储在地图中,其中key为teamName,值为具有上述详细信息的对象列表。
  • 从用户中读取输入团队名称,然后转到地图并从列表中获取团队详细信息并将其显示给用户。

答案 2 :(得分:0)

您需要的是将每个团队与他们得分的目标数量相关联。 Map数据结构就是您所需要的。

在您的情况下,将所有团队存储为地图中的关键字,并累积每个团队的得分目标。如果您有任何问题,请尝试编辑您的问题。

修改

// HashMap<Team, GoalsScored>
HashMap<String,Integer> teamMap = new HashMap<String, Integer>();
String[] teamKey = filescan.nextLine().split(" : ");

String team1 = teamKey[0];
String team2 = teamKey[1];
Integer team1goals = Integer.valueOf(teamKey[2]);
Integer team2goals = Integer.valueOf(teamKey[3]);

// if team1 is not in the map initialise with 0 goals
if (!teamMap.containsKey(team1)) {
    teamMap.put(team1, 0);
// if team2 is not in the map initialise with 0 goals
if (!teamMap.containsKey(team2)) {
    teamMap.put(team2, 0);

// accumulate team1 goals
teamMap.put(team1, teamMap.get(team1) + team1goals);
// accumulate team2 goals
teamMap.put(team2, teamMap.get(team2) + team2goals);

答案 3 :(得分:0)

您只需创建一个新的GameMatch类,然后循环浏览您的文件并将匹配详细信息存储在list<Match>中:

public Class Match{
 String team;
 int score:
 String opponent;
 int opponentScore;
}

然后为每个行存储Match实例中的匹配详细信息,然后将其添加到匹配列表中。

您的显示将如下:

System.out.println(match.team+":"+match.opponent+" "+match.score+":"+match.opponentScore);

其中match代表匹配列表的每个元素。

我认为应该这样做。