2016-03-28 9 views
-1

Ich habe drei Textdateien erstellt, inpt.txt, outputt.txt, & errorr.txt. Inputt.txt dient zur Eingabe, outputt.txt soll alle Zahlen aus inputt.txt ausgeben, die gültige Integer sind, und errorr.txt gibt alle Fehler aus der Eingabetextdatei aus. Ich habe Probleme mit der Iteration. Die System.out.println druckt alle Zahlen aus input.txt ganz gut; Wenn ich jedoch versuche, alle Zahlen in outputt.txt zu drucken, druckt es nur die erste Zeile der Zahlen. Hier ist mein Code:Wie kann ich eine Textdatei durchlaufen, um in eine andere Textdatei zu drucken?

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.PrintStream; 
import java.io.PrintWriter; 
import java.util.InputMismatchException; 
import java.util.NoSuchElementException; 
import java.util.Scanner; 

public class Lab5_Exceptions_Redo extends Exception { 

    public static void main(String[] args) throws FileNotFoundException { 

     String file = "inputt.txt"; 
     String file1 = "outputt.txt"; 
     String file2 = "errorr.txt"; 

     PrintWriter errorr = new PrintWriter(file2); 
     PrintStream ps = new PrintStream(file2); 

     PrintWriter outputt = new PrintWriter(file1); 
     Scanner scan = new Scanner(new File(file)); 
     while (scan.hasNext()) { 
      try { 

       String number = scan.nextLine(); 
       int num = Integer.parseInt(number); 
       System.out.println(num); 
       outputt.println(num); 
      } catch (InputMismatchException e) { 
       errorr.println("There was an input mismatch error."); 
       errorr.println(e.getMessage()); 
       e.printStackTrace(ps); 
      } catch (NoSuchElementException e) { 
       errorr.println("There is no such element."); 
       errorr.println(e.getMessage()); 
       e.printStackTrace(ps); 
      } catch (UnsupportedOperationException e) { 
       errorr.println("An unsupported operation occured."); 
       errorr.println(e.getMessage()); 
       e.printStackTrace(ps); 
      } catch (NumberFormatException e) { 
       errorr.println("Number Format Exception."); 
       errorr.println(e.getMessage()); 
       e.printStackTrace(ps); 
      } 

      errorr.close(); 
      outputt.close(); 
     } 
     scan.close(); 
    } 
} 
+1

Sie schließen "outputt" in der Schleife. Verschiebe es nach draußen, um es zu reparieren. Wählen, um als Tippfehler zu schließen. – dasblinkenlight

+0

Ich kann es nicht draußen schließen, weil ich Variablen deklariere, und ich kann die Variable nicht nach draußen verschieben, weil sie in meiner try-Anweisung stehen müssen. – HelpMe

Antwort

0

Die Printwriter Strom variable errorr sollte außerhalb der for-Schleife bewegen. Probieren Sie die folgende Codeversion aus.

public class Lab5_Exceptions_Redo extends Exception { 

public static void main(String[] args) throws FileNotFoundException { 

    String file = "inputt.txt"; 
    String file1 = "outputt.txt"; 
    String file2 = "errorr.txt"; 

    PrintWriter errorr = new PrintWriter(file2); 
    PrintStream ps = new PrintStream(file2); 

    PrintWriter outputt = new PrintWriter(file1); 
    Scanner scan = new Scanner(new File(file)); 
    while (scan.hasNext()) { 
     try { 
      String number = scan.nextLine(); 
      int num = Integer.parseInt(number); 
      System.out.println(num); 
      outputt.println(num); 
     } catch (InputMismatchException e) { 
      errorr.println("There was an input mismatch error."); 
      errorr.println(e.getMessage()); 
      e.printStackTrace(ps); 
     } catch (NoSuchElementException e) { 
      errorr.println("There is no such element."); 
      errorr.println(e.getMessage()); 
      e.printStackTrace(ps); 
     } catch (UnsupportedOperationException e) { 
      errorr.println("An unsupported operation occured."); 
      errorr.println(e.getMessage()); 
      e.printStackTrace(ps); 
     } catch (NumberFormatException e) { 
      errorr.println("Number Format Exception."); 
      errorr.println(e.getMessage()); 
      e.printStackTrace(ps); 
     } 
    } 
    errorr.close(); 
    outputt.close(); 
    scan.close(); 
} 
} 
Verwandte Themen