2016-10-08 25 views
-4

ループの標準偏差を計算しますか?私は標準偏差を計算するための公式を知っています、私はちょうど計算のためのユーザー入力を取る方法を知りたいです。私はプログラミングには新しいので、すべてを説明してください。私はまた、標準偏差の公式を書くことに私の残念な試みを気にしません。これはSDをもっと理解するためだけに働くことを意図したものではありません。最初にあなたのコードでJavaの標準偏差の計算

import java.util.Scanner; 

public class readFromKeyboard { 
    public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    String inStr = input.next(); 
    int n; 
    int i; 
    int count = 0; 
    int min = Integer.MAX_VALUE; 
    int max = Integer.MIN_VALUE; 
    double average=0; 
    int sum; 
    double deviation = 0; 

    while (!inStr.equals("EOL")) { 
     count++; 
     n = Integer.parseInt(inStr); 
     min = Math.min(min, n); 
     max = Math.max(max, n); 
     System.out.printf("%d ", n); 
     inStr = input.next(); 
     average += n; 
     // really bad attempt here 
     deviation = math.pow(n/average,2) ++/mean sqrt(); 
    } 
    average = average/count; 
    System.out.println("\n The average of these numbers is " + average); 
    System.out.printf("The list has %d numbers\n", count); 
    System.out.printf("The minimum of the list is %d\n", min); 
    System.out.printf("The maximum of the list is %d\n", max); 

    input.close(); 
    } 
} 
+0

[mcve]と[ask]を参照してください – Mat

+0

ようこそスタックオーバーフロー!良い質問をするのを助けるために私たちの[SO Question Checklist](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)をよく読んで、良い答えを得てください。 –

答えて

0

いくつかの問題:

あなたが最初の要素の数で割るだけで、その後アキュムレータとしてそれを使用しているので、averageのご利用には、非常に紛らわしいです。別のアキュムレータ変数を使って合計を計算してから、forループの外側の平均を計算するほうが、はるかに優れたスタイルになります。

平均が計算されると、再び値をループし、各数値がその平均との差の2乗で増加するアキュムレータ変数を保持することができます。

varianceSum += Math.pow(num - average, 2);

いったん全ての数字は、あなたが分散(おそらく0で除算を避けるために、チェックして)を取得するためにcountvarianceSumを分割し、標準偏差を見つけるためにMath.sqrt()を使用することができ、まとめています。

ユーザーからの入力に関しては、番号ごとにinput.nextInt()を繰り返し呼び出す必要があります。ユーザーは最初に入力数を入力し、forループでループするか、ScannerのhasNext()メソッドを使用して入力の終わりに達するまで読むことができます。

+0

OPの質問は、ユーザーの入力を得ることです。この答えはこれに対処しません。 –

+0

実際、今は – Michael

0

ループ内でinput.next();を呼び出して、繰り返しユーザー入力を取得する必要があります。

ここでは整数を扱うので、input.next();の代わりにin.nextInt()を使用することができます。 deviationの計算は不明です。

関連する問題