2016-08-09 13 views
1

ユーザーが整数Nを入力してからN倍の値を読み取り、その平均値(平均値)と標本標準偏差(それらの平方根の平方根の平方根平均との差をN - 1で割ったもの)。私は100じゃない現時点では、この出力を取得計算平均と標準偏差

5 
1 
2 
3 
4 
5 

Enter an integer: 
Average: 5.0 
Deviation: NaN 

出力が

Enter an integer: Enter a number: Enter a number: Enter a number: Enter a number: Enter a number: Average value is: 3.0 
The standard deviation is: 1.58 

する必要があります: は、これまでのところ、私はこのコード

import java.util.Scanner; 

public class AVGDevi 

{ 

public static void main(String[] args) 
{ 
    Scanner input = new Scanner(System.in); 



    double x; 

    double sum = 0; 

    double average = 0; 

    double dev = 0; 

    double var = 0; 

    double sqrx = 0; 

    int n = 0; 

    do 
    { 
     System.out.println("Enter an integer:"); 
     x = input.nextInt(); 
     if (x == -1) 
     { 
      break; 
     } 

     sum += x; 
     n++; 
     average = sum/n;  
     sqrx += Math.pow(x-average,2); 
     var = sqrx/(n-1); 
     dev = Math.sqrt(var); 


    } while (x<= 0); 

    System.out.println("Average: " + average); 
    System.out.println("Deviation: " + dev); 
    } 

} 

テストケースを持っています私が何をしているか確かめる間違った助けを借りれば素晴らしいことでしょう:D!

+0

は、あなたの計算を行います** **後のループは終了します。それ以外の場合は0で割っています。また、あなたはint divisionを調べて、それをやりなまぬようにしたいでしょう。 –

+0

if文の後に? –

+0

私は負の数でそれが何かを数えていなければそれを作ろうとしていた。 –

答えて

1

のみ:

public static void main(String[] args) 
{ 
Scanner input = new Scanner(System.in); 




double y=-1; 

double sum = 0; 

double average = 0; 

double dev = 0; 

double var = 0; 

double sqrx = 0; 

int n = 0; 


    System.out.println("Enter an integer:"); 
    y = input.nextInt(); 
    double z=y; 
    int i=0; 
    double x[] = new double[(int)z]; 
    while(y-->0){ 

    x[i] = input.nextDouble(); 

    sum += x[i]; 
    i++;   
    n++; 
    average = sum/n;  


    } 
    i=0; 
    while(z-->0){ 
     sqrx += Math.pow(x[i]-average,2); 
     i++; 
    } 
var = sqrx/(n-1); 
    dev = Math.sqrt(var); 

System.out.println("Average: " + average); 
System.out.println("Deviation: " + dev); 
    } 
+0

私は、私は論理的な誤りもあると思うこれらのテストケース3 1.5 2.5 –

+0

をしようとしたスレッド「メイン」java.util.InputMismatchExceptionでいくつかのより多くのテストケースを除いて、それをしようとしたとき、私はこのエラーを取得しますあなたのコードで。 – Kaushal28

+0

@ ross.cの編集を参照してください。 – Kaushal28

1

あなたはdo-whileガードでx <= 0を使用しています。したがって、正の数を入力すると、最初の反復後に終了します。また、最初の数字を入力すると、var = sqrx/(n-1)が表示されますが、n=1の場合は0で割っています。ホバークラフトの完全なEelsが示唆しているように、ベクトルまたはArrayListに数字を追加して、入力。次のようにループの代わりに、DO-whileループ、一方であなたが使用することができます

+0

甘い感謝:) –

関連する問題