2017-09-25 11 views
0

私のメインプログラムはDataSetオブジェクトを作成し、値を読み込み、負の値になるまでaddValueインスタンスメソッドを呼び出します。次に、getAverageメソッドとgetStandardDeviationメソッドを呼び出し、戻り値を出力します。平均3.28 標準偏差1.972815247 これは私のコードです。私は基本的に今は固執しています。浮動小数点データセット

import java.util.Scanner; 

public class DataSet { 

    private double value; 
    private double count; 
    private double sum; 
    private double sumofSquares; 


    public void addValue(double value) { 
     while (value >= 0) { 
      count++; 
      sum += value; 
      sumofSquares += (value * value); 

     } 

    } 

    public double getAverage() { 
     return sum/count; 

    } 

    public double getStandardDeviation() { 
     return Math.sqrt(((count * sumofSquares) - (sum * sum))/(count * (count - 1))); 

    } 

    public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter Value"); 
    double value = sc.nextDouble(); 
    DataSet j1 = new DataSet(); 
    j1.addValue(value); 
    System.out.println("The average of the value " + j1.getAverage()); 
    System.out.println("The Standard Deviation of the value" + j1.getStandardDeviation()); 

    } 
} 
+2

だから、あなたの質問は何ですか? –

答えて

0

このコードでは間違っているようです。まず、入力コードがwhileループの内部にないので、新しい値を摂取することはありません。第2に、addValue関数は正の値を入力すると無限ループを呼び出します。これはwhileループが引き続き実行され、DataSetメンバに追加されるためです。

私はあなたのコードをリファクタリングして、より意味を分かりやすくしました。特定の分野について質問があるかどうかを尋ねます。

import java.util.Scanner; 

public class DataSet { 

private double value; 
private double count; 
private double sum; 
private double sumofSquares; 


public int addValue(double value) { 
    if(value >= 0) { 
     count++; 
     sum += value; 
     sumofSquares += (value * value); 
     return 0; 
    }else{ 
     System.out.println("The average of the value " + this.getAverage()); 
     System.out.println("The Standard Deviation of the value " + this.getStandardDeviation()); 
     return -1; 
    } 
} 

public double getAverage() { 
    return sum/count; 

} 

public double getStandardDeviation() { 
    return Math.sqrt(((count * sumofSquares) - (sum * sum))/(count * (count - 1))); 

} 

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter Values"); 

    double value = 0; 
    DataSet j1 = new DataSet(); 

    while(true){ 
     value = sc.nextDouble(); 

     if(j1.addValue(value) == 0){ 
      //continue 
     }else{ 
      return; 
     } 
    } 
} 

}

関連する問題