Problema para identificacion de caracteres!

Hola quisiera ver si me pueden ayudar estoy desarrollando un programa en java que me genere esto:

al leer un archivo ejmeplo: archivo.txt con el contenido while()1234; quisiera que me lo mostrara al imprimir en pantalla asi:

while
(
)
1234

Y EL MIO LO HACE ASI

while
( ) <--------- Esto lo quiero en diferente linea...
12345
;

Mi codigo es el siguiente:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.Vector;
import java.io.*;

public class final2 {
public static void main(String[] args) throws IOException {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Vector a1 = new Vector();
System.out.println("Dame el nombre del archivo a buscar:");
String dato = br.readLine();

FileReader fr = new FileReader(dato);

System.out.println("El archivo se a encontrado:\n");

int ultimoEstado = 0;
int c;
while ( (c = fr.read())!= -1) {

if(c == '\n')
continue;
if(Character.isDigit(c))
{

if(ultimoEstado == 1)
System.out.print((char)c);
else
System.out.print("\n"+(char)c);
ultimoEstado = 1;
}
else if (Character.isLetter(c))
{
if(ultimoEstado == 2)
System.out.print((char)c);
else
System.out.print("\n"+(char)c);
ultimoEstado = 2;

}
else
{
if(ultimoEstado == 3)
System.out.print((char)c);
else
System.out.print("\n"+(char)c);
ultimoEstado = 3;

}

}

} catch (FileNotFoundException e) {
System.out.println ("Erro el archivo no se encuentra");
}
catch (IOException ioe)
{
System.out.println("Error al leer del teclado");
}
}
}

espero sus respuestas grascias...

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

ultimoEstado

En la condición de ultimoEstado==3 tienes que hacer una de dos cosas: Imprimir siempre cambio de linea antes del caracter, o cambiar el ultimoEstado a 0.