Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何读取文件并根据文件中给出的记录计算损益表?_Java_File - Fatal编程技术网

Java 如何读取文件并根据文件中给出的记录计算损益表?

Java 如何读取文件并根据文件中给出的记录计算损益表?,java,file,Java,File,我的任务是我必须管理一个足球联赛。我必须将一个足球联赛(文本文件)导入到程序中。导入文件的每一行显示一场比赛的结果:两支球队的名称和分数,如 彼得4老虎3 天空2彼得0 老虎1天空2 我必须编写程序来读取这个文本文件,并显示团队记录的输出,如 球队赢了输了 彼得11 老虎02 天空2 0 我不明白如何通读每一行并计算与每个队/队串相关的胜负 import java.util.*; import java.io.*; public class SoccerLeagueStandings {

我的任务是我必须管理一个足球联赛。我必须将一个足球联赛(文本文件)导入到程序中。导入文件的每一行显示一场比赛的结果:两支球队的名称和分数,如

彼得4老虎3

天空2彼得0

老虎1天空2

我必须编写程序来读取这个文本文件,并显示团队记录的输出,如

球队赢了输了

彼得11

老虎02

天空2 0

我不明白如何通读每一行并计算与每个队/队串相关的胜负

import java.util.*; 
import java.io.*;

public class SoccerLeagueStandings
{ 
    public static void main(String[] args) throws IOException 
  {
 File inFile = new File("LeagueScore.txt");
    if(! inFile.exists())
    {
      System.out.println("Error could not open the file");
    return;
    }
String Panthers="Panthers";
String Tigers = "Tigers";
String Sky = "Sky";

Scanner input = new Scanner (inFile);
int PW=0;
int PL=0;
int TW =0;
int TL = 0;
int SW=0;
int SL=0;

while (input.hasNextLine())
{
 String firstTeam=input.next();
 input.nextInt();
 int firstScore=input.nextInt();
   String secondTeam=input.next();
   input.nextInt();
   int secondScore = input.nextInt();
 if (firstScore>secondScore)
 {
   if (firstTeam.equals(Panthers))
   {
     PW+=1;
   }
   if (firstTeam.equals(Tigers))
   {
     TW+=1;
   }
   if (firstTeam.equals(Sky))
   {
     SW+=1;
   }
 }
}

}
}

这个问题的主要挑战是跟踪每个团队的胜负。 所以我建议创建一个名为Team的类,它包含:name、winscont、losscont。这个类代表一个单独的团队以及它的胜负计数

创建团队的数组列表,并使用文件内容填充它。 因此,您的算法如下所示:

  • 使用扫描仪逐行分析文件
  • 将每一行按空格分开,以获得各小组及其分数
  • 比较各队的得分
  • 将赢家团队添加到ArrayList中,或增加其winsCount(如果已存在)
  • 对失败者也一样
  • 以下是未经测试的示例代码:

    以下是团队课程:

    public class Team {
    
        private String name;
    
        private int winsCount;
        private int lossCount;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getWinsCount() {
            return winsCount;
        }
    
        public void setWinsCount(int winsCount) {
            this.winsCount = winsCount;
        }
    
        public int getLossCount() {
            return lossCount;
        }
    
        public void setLossCount(int lossCount) {
            this.lossCount = lossCount;
        }
    
    }
    
    下面是如何从输入文件填充arraylist:

    private void generateWinsLossesFromInput(String filePath)
    {
        Scanner input = new Scanner(filePath);
        List<Team> teams = new ArrayList<Team>();
        while(input.hasNext())
        {
            String match = input.next();
            // Split the line and get teams and their scores.
            String[] splittedMatch = match.split("\\s+");
            String firstTeam = splittedMatch[0];
            int firstTeamScore = Integer.parseInt(splittedMatch[1]);
            String secondTeam = splittedMatch[2];
            int secondTeamScore = Integer.parseInt(splittedMatch[3]);
    
            if(firstTeamScore > secondTeamScore)
            {
                addWinner(firstTeam, teams);
                addLoser(secondTeam, teams);
            }
            else
            {
                if(secondTeamScore > firstTeamScore)
                {
                    addWinner(secondTeam,teams);
                    addLoser(firstTeam, teams);
                }
            }
        }
    }
    
    private void addWinner(String team, List<Team> teams)
    {
        int index = 0;
        for(index = 0; index<teams.size(); index++)
        {
            Team t = teams.get(index);
            if(t.getName().equalsIgnoreCase(team))
            {
                // Team already exists, so just increment its winsCount
                t.setWinsCount(t.getWinsCount() + 1);
                break;
            }
        }
    
        if(index == teams.size())
        {
            // team not found, So add it as new team to the list.
            Team t = new Team();
            t.setName(team);
            t.setWinsCount(1);
            t.setLossCount(0);
            teams.add(t);
        }
    }
    
    private void addLoser(String team, List<Team> teams)
    {
        int index = 0;
        for(index = 0; index<teams.size(); index++)
        {
            Team t = teams.get(index);
            if(t.getName().equalsIgnoreCase(team))
            {
                // Team already exists, so just increment its loss count.
                t.setLossCount(t.getLossCount() + 1);
                break;
            }
        }
    
        if(index == teams.size())
        {
            // team not found , then add new team to the list
            Team t = new Team();
            t.setName(team);
            t.setWinsCount(0);
            t.setLossCount(1);
            teams.add(t);
        }
    }
    
    private void generateWinsLossesFromInput(字符串文件路径)
    {
    扫描仪输入=新扫描仪(文件路径);
    列表团队=新建ArrayList();
    while(input.hasNext())
    {
    字符串匹配=输入。下一步();
    //分成两条线,得到各队和他们的分数。
    字符串[]splittedMatch=match.split(\\s+);
    字符串firstTeam=splittedMatch[0];
    int firstTeamScore=Integer.parseInt(splittedMatch[1]);
    字符串secondTeam=splittedMatch[2];
    int secondTeamScore=Integer.parseInt(splittedMatch[3]);
    如果(firstTeamScore>secondTeamScore)
    {
    addWinner(第一队,第二队);
    addLoser(第二组,第二组);
    }
    其他的
    {
    如果(secondTeamScore>firstTeamScore)
    {
    addWinner(第二组,第二组);
    addLoser(第一队,第二队);
    }
    }
    }
    }
    私人团队(字符串团队、列表团队)
    {
    int指数=0;
    
    对于(index=0;index)到目前为止您做了什么?如果您想解决这个问题,您需要能够理解这个问题。首先您应该了解如何从文本文件读取输入,然后您需要了解如何解析文件中的输入(可能是通过空格),然后你需要弄清楚如何跟踪每支球队的胜负。我已经更新了我到目前为止所做的,我不知道如何跟踪每支球队的胜负。你可以使用什么样的数据结构?我们可以使用Arrays我们不知道如何使用maps或Parse。你会对ArrayList执行相同的算法,al虽然hashmaps会更快。请检查我编辑的响应。如果这对您有效,请将此作为答案检查,以帮助其他人。