2017-03-29 25 views
0

私のクラスのショートプログラムを書きましたが、私は理解できないことがあります。だから私は100のランダムな整数をファイルに書いて、データを読み返して、整数を昇順で印刷することになっています。すべて正常に動作しますが、出力ファイルに最後のソートされたリストが表示されないので、誰でもその理由を見ることができます。ファイルへの入出力ファイル

はここに私のコードです:

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(); 

} 

はどうもありがとうございました、任意のヘルプは非常に感謝されます!

+1

数字を作成した後に出力を閉じる必要があります。 – notyou

+0

誰かが私にそれを打つのを見る - 私のマシンは私のIDEを開いてあまりにも長い時間を過ごした:) – notyou

答えて

0

出力ストリームを閉じてファイルに書き込む必要があります。この作業は、2回目ですが、初めてではありません。

追加:

output.close(); 

後:あなたが値を印刷した後、あなたのデータを保存するために使用output.flush()Scanner input = new Scanner(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 + " "); 
} 
//Here close the first output stream to get the data to the file. 
output.close(); 
1

output.close() - ストリームを閉じても、ソートされた値を保存することはできません。

// 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

は、コードの以下の行の前に、あなたのファイルにあなたの内容を書き込むためにcloseまたはflushする必要があります。

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

上記のコード行まで、ファイルには何も書き込まれていませんでした。したがって、以下のコードは無用になります

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 
    } 
関連する問題