2017-03-29 11 views
0

Ich schrieb ein kurzes Programm für eine meiner Klasse und es gibt etwas, das ich einfach nicht herausfinden kann. Also soll ich 100 zufällige Ganzzahlen in eine Datei schreiben, die Daten zurücklesen und die Ganzzahlen in aufsteigender Reihenfolge ausgeben. Alles funktioniert gut, aber ich sehe meine endgültige sortierte Liste nicht in der Ausgabedatei, jeder kann sehen warum?Eingabe/Ausgabe für eine Datei

Hier ist mein Code:

private final static int NUMBEROFRANDOM = 100; 

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

    // Creating my file 
    java.io.File file = new java.io.File("Question1.txt"); 

    // If it already exists, print a message and terminate program 
    if (file.exists()) { 
     System.out.println("File already exists."); 
     System.exit(0); 
    } 

    // Creating my PrintWriter object 
    PrintWriter output = new PrintWriter(file); 

    // Creating 100 random numbers between 0 and 100 and printing them on the file 
    for (int i = 0; i < NUMBEROFRANDOM; i++) { 
     int number = (int) (Math.random() * 101); 
     output.print(number + " "); 
    } 

    // Creating my Scanner object 
    Scanner input = new Scanner(file); 

    // Creating my array list to store the sorted list of 100 elements 
    ArrayList<Integer> sortedList = new ArrayList<Integer>(); 

    // Reading the elements from the file and adding them into my array list 
    while (input.hasNext()) { 
     sortedList.add(input.nextInt()); 
    } 

    //Sorting elements from array list 
    Collections.sort(sortedList); 

    // Printing the elements in increasing order 
    for (int i = 0; i < sortedList.size(); i++) { 
     //System.out.println(sortedList.get(i)); 
     output.print(sortedList.get(i)); 
    } 

    // Closing my objects 
    input.close(); 
    output.close(); 

} 

Vielen Dank, ist jede Hilfe sehr geschätzt!

+1

Sie müssen die Ausgabe schließen, nachdem Sie die Zahlen erstellen. – notyou

+0

Ich sehe, jemand schlug mich dazu - meine Maschine verbrachte zu lange meine IDE öffnen :) – notyou

Antwort

0

Sie müssen den Ausgabestream schließen, damit er in die Datei schreibt. Sie tun dies beim zweiten Mal richtig, aber nicht beim ersten Mal.

Anzahl:

output.close(); 

Nach:

// Creating 100 random numbers between 0 and 100 and printing them on the file 
for (int i = 0; i < NUMBEROFRANDOM; i++) { 
    int number = (int) (Math.random() * 101); 
    output.print(number + " "); 
} 
//Here close the first output stream to get the data to the file. 
output.close(); 
1

Ihre Datei ist leer, wenn Sie lesen mit Scanner input = new Scanner(file);

Verwenden output.flush() Ihre Daten zu speichern, nachdem die Werte zu drucken.

- Schließen Sie Ihren Stream und Sie können Ihre sortierten Werte nicht speichern.

// Creating 100 random numbers between 0 and 100 and printing them on the file 
for (int i = 0; i < NUMBEROFRANDOM; i++) { 
    int number = (int) (Math.random() * 101); 
    output.print(number + " "); 
} 

output.flush(); 
0

Vor unten Zeile Code, müssen Sie close oder flush Ihre Inhalte in Ihre Datei zu schreiben.

output.close(); <--- you need to close here 
Scanner input = new Scanner(file); 

Da, bis oberhalb der Codezeile, wurde nichts in die Datei geschrieben. So, unter dem Code werden unbrauchbar

while (input.hasNext()) { // nothing to read 
     sortedList.add(input.nextInt()); //nothing added to List 
    } 

    //Sorting elements from array list 
    Collections.sort(sortedList); //nothing to sort 

    // Printing the elements in increasing order 
    for (int i = 0; i < sortedList.size(); i++) { 

     output.print(sortedList.get(i)); // won't execute this line 
    }