【发布时间】:2015-03-26 09:20:00
【问题描述】:
我正在创建一个程序,它可以简单地创建足球队的对象,然后将球队的名称和记录存储在一个文本文件中。
我正在尝试在我的文件中创建部分,以便我可以打印出同一大陆上的团队。
假设下一行文本是我的文本文件的开头
北美
结束北美
大家好
如果我想让我在北美的团队的对象只写在这两行文本之间,我该怎么做?
目前我得到的结果不能正常工作,团队名称和记录正在“结束北美”之后打印。
以下是我目前的代码。
import java.util.*;
import java.io.*;
public class Teams {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Scanner nameInput = new Scanner(System.in);
System.out.println("Team Creator!");
System.out.println("-----------------------------");
System.out.println("Select an option");
System.out.println("");
System.out.println("1. Create-A-Team");
System.out.println("");
int optionSelection = input.nextInt();
if(optionSelection==1) {
System.out.println("Please enter the name of the team you'd like to create");
String teamName = nameInput.nextLine();
Team team = new Team();
team.createTeam(teamName);
}
}
}
class Team {
String name;
int wins,loses;
boolean northAmericanTeam = true;
public void createTeam(String name) {
Team newTeam = new Team();
newTeam.name = name;
this.wins = 0;
this.loses = 0;
System.out.println("You created " + name + "!");
System.out.println("Wins: " + wins);
System.out.println("Loses: " + loses);
if(northAmericanTeam == true) {
BufferedReader reader = null;
try(PrintWriter write = new PrintWriter(new BufferedWriter(new FileWriter("teaminfo.txt", true)))) {
File file = new File("teaminfo.txt");
reader = new BufferedReader(new FileReader(file));
String line;
String nAmerica ="North America";
while ((line = reader.readLine()) != null) {
System.out.println(line);
if(line.equals(nAmerica)) {
write.println(name+"" + ": Wins[" +wins+"] Loses[" +loses+"]");
write.close();
}
}
}
catch (IOException e) {
e.printStackTrace();
}
finally {
try {
reader.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
【问题讨论】:
-
看来您正在写入您正在读取的同一个文件 - 这不起作用,您需要写入另一个文件。 (之后可能将该文件移至您原来的 teaminfo.txt)
标签: java string file text line