2016-10-24 10 views
0

入力ファイルのデータを使用して別のドキュメントに書き込み、そのファイルから平均と標準偏差を計算するように割り当てられています。私のコードが正しくコンパイルされている(Dr.Javaによる)が、出力ファイルに出力を与えていないという問題があります。私は、問題の領域だと思うコードが添付されています。ループの前にファイルを読み込んだり使用したりすることができます。それらの場所が間違いの場所であるかどうか誰にでも教えてもらえますか?入力ファイルを読み込んでコードから出力を取得しない

// Create a File object passing it the filename 
    File readFile = new File(filename); 
    // Create a Scanner object passing File object 
    Scanner inputFile = new Scanner(filename); 
    // Perform a priming read to read the first line of the file; 
    line = inputFile.nextLine(); 
    while (inputFile.hasNext()) //create a loop that continues until you are at the end of the file 
    { 
    while(Double.parseDouble(line) != -1) 
     { 
     sum += Double.parseDouble(line); //convert the line into a double value and add the value to the sum 
     count++; //increment the counter 
     line = inputFile.nextLine(); //read a new line from the file 
     } 
     mean = sum/count; 
    } 
    inputFile.close(); 

出力ファイルコード:

// Create a FileWriter object using "OutputFileProcess.txt" 
    File file = new File("OutputFileProcess.txt"); 
    FileWriter fw = new FileWriter(file); 
    // Create a PrintWriter object passing the FileWriter object 
     PrintWriter outputFile = new PrintWriter("OutputFileProcess.txt"); 
    // Print the results to the output file 
     outputFile.println(mean); 
     outputFile.println(stdDev); 
    // Close the output file 
     outputFile.close(); 

コードは二つのループ、NED、およびテキストファイル内の任意の負の数を除外するための1まで継続するものを必要とします。私も自分自身を紹介する必要があります。私はジョーです。

+1

デバッガの使用方法を学ぶ必要があります – ControlAltDel

+0

出力ファイルにはどこに書き込んでいますか?あなたが投稿したコードは読書のためのものです。 – BCartolo

+0

出力ファイルコードを追加しました。エラーが1つの領域にしかないと思うので、私はコードをあまりにも多く投稿したくありませんでした。 –

答えて

0

これは問題の中核ではないかもしれませんが、あなたのwhileループの1つは時代遅れです。内側の状態

Double.parseDouble(line) != -1 

がfalseになった場合

は、外側のループしながら、lineの値とループはもう入ったことはありませんしながら、内部は変更されません。 そのため、アルゴリズム全体が最初の-1で停止します。

このダウンを書くためのより良い方法は、==とダブルスを比較すると、常に危険ですので、あなたはまた、(彼らはすべてがある場合)整数として値を解析し、比較検討すべきである

while (inputFile.hasNext()) 
{ 
    final String line = inputFile.nextLine(); 
    final double lineAsDouble = Double.parseDouble(line); 
    if (lineAsDouble != -1D) { 
     sum += lineAsDouble; 
     count++; 
    } 
} 
final double mean = (double) sum/(double) count; 

だろう。

関連する問題