У меня есть рабочая программа, которая отлично печатает на консоли. Однако у меня возникают проблемы, если я хочу напечатать его в выходном файле. Он выполняет только инструкцию Else. Он не войдет в инструкцию If и Else.PrintWriter on Multiple If Else Statement
public void processFile()
{
final String IN = "IN";
final String OUT = "OUT";
final String CLOSE = "CLOSE";
PrintWriter fileOut;
final String FILE_NAME_IN = "Events.txt";
final String FILE_NAME_OUT = "SystemLog.txt";
BufferedReader fileIn;
String inputLine;
try
{
// print out initial state
fileOut = new PrintWriter(new FileWriter(FILE_NAME_OUT));
System.out.println("---------");
fileOut.println("---------");
System.out.println("INCOMING PROCESS");
fileOut.println("INCOMING PROCESS");
System.out.println(list.toString());
fileOut.println(list.toString());
System.out.println("OUTGOING PROCESS");
fileOut.println("OUTGOING PROCESS");
System.out.println(queue.toString());
fileOut.println(queue.toString());
fileOut.close();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
try
{
// instantiate reader and grab the first line
fileIn = new BufferedReader(new FileReader(FILE_NAME_IN));
inputLine = fileIn.readLine();
// While we still have events to process...
while(inputLine != null)
{
String [] tokens = inputLine.split(" "); // read and tokenize line from text file
if(tokens[0].equals(IN))
{
try
{
fileOut = new PrintWriter(new FileWriter(FILE_NAME_OUT));
System.out.println("\n---------");
fileOut.println("\n---------");
System.out.println(tokens[0] + " " + tokens[1]);
fileOut.println(tokens[0] + " " + tokens[1]);
System.out.println("---------");
fileOut.println("---------");
System.out.println("\n\n");
fileOut.println("\n\n");
// print status
System.out.println("INCOMING PROCESS");
fileOut.println("INCOMING PROCESS");
System.out.println(list.toString());
fileOut.println(list.toString());
System.out.println("OUTGOING PROCESS");
fileOut.println("OUTGOING PROCESS");
System.out.println(queue.toString());
fileOut.println(queue.toString());
fileOut.close();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
else if(tokens[0].equals(OUT))
{
try
{
fileOut = new PrintWriter(new FileWriter(FILE_NAME_OUT));
System.out.println("\n---------");
fileOut.println("\n---------");
System.out.println(tokens[0] + " " + tokens[1]);
fileOut.println(tokens[0] + " " + tokens[1]);
System.out.println("---------");
fileOut.println("---------");
System.out.println("\n\n");
fileOut.println("\n\n");
// print status
System.out.println("INCOMING PROCESS");
fileOut.println("INCOMING PROCESS");
System.out.println(list.toString());
fileOut.println(list.toString());
System.out.println("OUTGOING PROCESS");
fileOut.println("OUTGOING PROCESS");
System.out.println(queue.toString());
fileOut.println(queue.toString());
fileOut.close();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
else //CLOSE
{
try
{
fileOut = new PrintWriter(new FileWriter(FILE_NAME_OUT));
System.out.println("\n\n---------");
fileOut.println("\n\n---------");
System.out.println(tokens[0]);
fileOut.println(tokens[0]);
System.out.println("---------");
fileOut.println("---------");
System.out.println("\n\n");
fileOut.println("\n\n");
// print status
System.out.println("INCOMING PROCESS");
fileOut.println("INCOMING PROCESS");
System.out.println(list.toString());
fileOut.println(list.toString());
System.out.println("OUTGOING PROCESS");
fileOut.println("OUTGOING PROCESS");
System.out.println(queue.toString());
fileOut.println(queue.toString());
fileOut.close();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
inputLine = fileIn.readLine(); // grab the next line
}
fileIn.close();
}
catch(IOException ioe)
{
System.out.println("Error: Could not read file.");
ioe.printStackTrace();
}
}
Как выглядит ваш вход? Установите контрольную точку в инструкции if и отлаживайте ее, чтобы увидеть, является ли «токенс» тем, что вы ожидали от него. Кроме того, здесь много дублирующегося кода, вы можете захотеть реорганизовать свою печать на отдельный метод, который будет обрабатывать печать как на «System.out» (если это действительно то, что вы хотите сделать), так и в файле. – Riaz