我正在制作一个从名为playoffs.txt的文件中读取数据的程序。每一行都有一个团队名称,分数和分区,每个分别用冒号分隔,如下所示:
Panthers:0:Atlantic
Lightning:0:Atlantic
Red Wings:0:Atlantic
我想运行一个for循环,为每个团队打印出来:
Team: Panthers
Series Score: 0
Division: Atlantic
但是,我无法弄清楚如何分隔每一行的值,因为readLine似乎打印出整行。这是我的方法:
private static void series(String team1) throws FileNotFoundException, IOException{
BufferedReader in = new BufferedReader(new FileReader("playoffs.txt"));
String[] team = new String[0];
int[] score = new int[0];
String[] division = new String[0];
String s;
int j = 0;
while((s = in.readLine()) != null){
String[] var = s.split(":");
team[j] = in.readLine(var[0]);
score[j] = in.read();
division[j] = in.read();
cout.println(team[j]);
cout.println(score[j]);
cout.println(division[j]);
j++;
}
}
我是Java和我在另一个类似于我的问题的StackOverflow问题上找到的s.split行的新手,它运行了一个错误,说"字符串无法转换为布尔值。&#34 ;我也对readLine()和read()之间的区别感到困惑。任何帮助指出我正确的方向来分别阅读每个值将不胜感激。
答案 0 :(得分:3)
试
String[] var = s.split(":");
team[j] = var[0];
score[j] = var[1];
division[j] = var[2];
但是您应该将team
初始化为足够大以容纳您的数据
我个人会使用ArrayList
考虑创建一个名为Team
的新类,该类具有团队名称,分数和分组。您可以创建ArrayList <Team> = new ArrayList <Team> ();
答案 1 :(得分:1)
您正确地拆分了':'符号,该符号返回String[]
。
您无需致电in.readLIne(var[0])
。您已经拥有String[]
中的值。只需将它们分配给您的变量:
while((s = in.readLine()) != null){
String[] var = s.split(":");
team[j] = var[0];
score[j] = var[1];
division[j] = var[2]
cout.println(team[j]);
cout.println(score[j]);
cout.println(division[j]);
j++;
}
这解决了您的一个问题。但是,由于您尝试为每个条目存储多个值,因此最好使用表示您拥有的数据的容器类。然后,您可以创建容器类的新实例,并覆盖toString()方法,以在收到所有输入后打印每个内容。
尝试添加GameResult类(或称之为其他类):
public class GameResult{
String team;
int score;
String division;
public GameResult(String team, int score, String division){
this.team = team;
this.score = score;
this.division = division;
}
public String getTeam(){
return team;
}
public int getScore(){
return score;
}
public String getDivision(){
return division;
}
@Override
public String toString(){
StringBuilder sb = new StringBuilder();
sb.append("Team: ").append(team).append("\n");
sb.append("Score: ").append(score).append("\n");
sb.append("Division: ").append(division).append("\n");
return sb.toString();
}
}
现在,您可以使用新类和List中的每个行存储来稍后打印结果:
private static void series(String team1) throws FileNotFoundException, IOException{
BufferedReader in = new BufferedReader(new FileReader("playoffs.txt"));
List<GameResult> results = new ArrayList<>();
String s;
while((s = in.readLine()) != null){
String[] var = s.split(":");
GameResult result = new GameResult(var[0], var[1], var[2]);
}
//Print out the results
for(GameResult aResult: results){
System.out.print(aResult);
}
}