java - computing mean and standard deviation -


creating program enables user enter integer n, reads n double values, , prints mean (average value) , sample standard deviation (square root of sum of squares of differences average, divided n - 1). far have code

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;           {          system.out.println("enter 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);   }  } 

test case:

5 1 2 3 4 5 

currently getting output

enter integer: average: 5.0 deviation: nan 

output should

enter integer: enter number: enter number: enter number: enter number: enter number: average value is: 3.0 standard deviation is: 1.58 

i'm not 100% sure i'm doing wrong great :d !

you can use while loop instead of do-while loop, following:

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 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);   } 

Comments