0

私はこのことを理解していると思っていたので、うまくいくと確信していました。残念ながら、そうではありませんでした。

以下のコードは、平均、入力された値の数を返し、std Var を計算することになっています。平均とカウントを返すようにしますが、標準変数の結果はオフです。値 5、6、8、および 9 を使用すると、std var 1.83 の結果が得られるはずですが、7.17 から少し離れています。

私のエラーが標準偏差を計算する方法にあることは知っていますが、それを正しく行っていると確信していました。

これが私のコードです:

/**
This class is used to calculate the average and standard deviation
of a data set.
*/

public class DataSet{

    private double sum;
    private double sumSquare;
    private int counter;

    /**Constructs a DataSet object to hold the
     * total number of inputs, sum and square
     */

    public DataSet(){

        sum = 0;
        sumSquare = 0;
        counter = 0;
    }

    /**Adds a value to this data set
     * @param x the input value
     */

    public void add(double x){

        sum = sum + x;
        sumSquare = sumSquare + x * x;
        counter++;

    }

    /**Calculate average of dataset
     * @return average, the average of the set
     */

    public double getAverage(){

        double avg = sum / counter;

        return avg;

    }

    /**Get the total inputs values
     * @return n, the total number of inputs
     */

    public int getCount(){

        return counter;

    }


    public double getStandardDeviation(){

        double sqr = sumSquare / counter;
        double stdDev = Math.sqrt(sqr);


        return stdDev;


    }
}

これが私のランナープログラムです:

import java.util.Scanner;

class DataSetRunner 

{

    public static void main(String[] args)

    {

        Scanner input = new Scanner(System.in);
        DataSet data = new DataSet();

        boolean done = false;
        while (!done)

        {

            System.out.println("Enter value, Q to quit: ");
            String userInput = input.next();
            if (userInput.equalsIgnoreCase("Q"))
             done = true;

             else

             {

                 double x = Double.parseDouble(userInput);
                 data.add(x);

             }

        }

        System.out.println("Average = " + data.getAverage());
        System.out.println("Count = " + data.getCount());
        System.out.println("The Standard Deviation is = " + data.getStandardDeviation());



    }
4

1 に答える 1