What it currently does is reads in the data from a text file and will output them in the specified manner. When I output it to the console then it will display it into the way that is needed but when I try to output it to a text file then it will only write the last line of the loop for some reason. This is the code I have to handle the output for the file:
public static void main(String[] args) throws FileNotFoundException {
String gt;
String gt2;
int gs1;
int gs2;
int total = 0;
Scanner s = new Scanner(new BufferedReader(
new FileReader("input.txt"))).useDelimiter("\\s*:\\s*|\\s*\\n\\s*");
while (s.hasNext()) {
String line = s.nextLine();
String[] words = line.split("\\s*:\\s*");
//splits the file at colons
if(verifyFormat(words)) {
gt = words[0]; // read the home team
gt2 = words[1]; // read the away team
gs1 = Integer.parseInt(words[2]); //read the home team score
total = total + gs1;
gs2 = Integer.parseInt(words[3]); //read the away team score
total = total + gs2;
validresults = validresults + 1;
File file = new File("out.txt");
FileOutputStream fos = new FileOutputStream(file);
PrintStream ps = new PrintStream(fos);
System.setOut(ps);
System.out.println(gt + " " + "[" + gs1 + "]" + " | " + gt2 + " " + "[" + gs2 + "]");
//output the data from the file in the format requested
}
else{
invalidresults = invalidresults + 1;
}
}
Every time you call the constructors for the
FileOutputStream
andPrintStream
, it's like starting over. The objects no longer know that they were supposed to store information about the previous iteration of the loop because they were just constructed. Moving all of these constructors out of your loop and only calling them once will solve your problem. That isshould be created (once!) before you enter the loop
while(s.hasNext())
.