Java 如何读取文件并根据文件中给出的记录计算损益表?
我的任务是我必须管理一个足球联赛。我必须将一个足球联赛(文本文件)导入到程序中。导入文件的每一行显示一场比赛的结果:两支球队的名称和分数,如 彼得4老虎3 天空2彼得0 老虎1天空2 我必须编写程序来读取这个文本文件,并显示团队记录的输出,如 球队赢了输了 彼得11 老虎02 天空2 0 我不明白如何通读每一行并计算与每个队/队串相关的胜负Java 如何读取文件并根据文件中给出的记录计算损益表?,java,file,Java,File,我的任务是我必须管理一个足球联赛。我必须将一个足球联赛(文本文件)导入到程序中。导入文件的每一行显示一场比赛的结果:两支球队的名称和分数,如 彼得4老虎3 天空2彼得0 老虎1天空2 我必须编写程序来读取这个文本文件,并显示团队记录的输出,如 球队赢了输了 彼得11 老虎02 天空2 0 我不明白如何通读每一行并计算与每个队/队串相关的胜负 import java.util.*; import java.io.*; public class SoccerLeagueStandings {
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。这个类代表一个单独的团队以及它的胜负计数 创建团队的数组列表,并使用文件内容填充它。 因此,您的算法如下所示:
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会更快。请检查我编辑的响应。如果这对您有效,请将此作为答案检查,以帮助其他人。