Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

I am trying to solve an exercise problem from the Practice-It! website.

I am not a student but I have purchased the book(Building Java Programs) from Amazon. I am trying to teach myself how to code. It is not my intention to violate any EE terms of restriction.

Problem link

Exercise 7.6: stdev

Write a method called stdev that returns the standard deviation of an array of integers. Standard deviation is computed by taking the square root of the sum of the squares of the differences between each element and the mean, divided by one less than the number of elements. (It's just that simple!)

More concisely and mathematically, the standard deviation of an array a is written as follows:

standard deviation

For example, if the array passed contains the values {1, -2, 4, -4, 9, -6, 16, -8, 25, -10}, your method should return approximately 11.237. You may assume that the array passed is non-null and contains at least two values, because the standard deviation is undefined otherwise.

I have written some code but keep that I thought should work but keep failing test cases.

Please review my code an help guide me to a solution.

I tried following this algorithm/formula:

http://www.mathsisfun.com/data/standard-deviation.html

I appreciate your help.

I am not a student but I have purchased the book(Building Java Programs) from Amazon. I am trying to teach myself how to code. It is not my intention to violate any EE terms of restriction.

Problem link

Exercise 7.6: stdev

Write a method called stdev that returns the standard deviation of an array of integers. Standard deviation is computed by taking the square root of the sum of the squares of the differences between each element and the mean, divided by one less than the number of elements. (It's just that simple!)

More concisely and mathematically, the standard deviation of an array a is written as follows:

standard deviation

For example, if the array passed contains the values {1, -2, 4, -4, 9, -6, 16, -8, 25, -10}, your method should return approximately 11.237. You may assume that the array passed is non-null and contains at least two values, because the standard deviation is undefined otherwise.

I have written some code but keep that I thought should work but keep failing test cases.

Please review my code an help guide me to a solution.

```
public static double stdev(int a[]){
double mean = 0;
int sum = 0;
//1. Work out the Mean (the simple average of the numbers)
for (int i = 0; i < a.length; i++) {
sum += a[i];
if(i == a.length -1){
mean = sum/a.length;
}
}
//2. Then for each number: subtract the Mean and square the result
//GET DIFFERENCE
double variance = 0;
double [] b = new double [a.length];
for (int i = 0; i < a.length; i++) {
//b[i] = Math.sqrt(Math.abs(a[i] - mean));
double diff = Math.abs(a[i] - mean);
b[i] = diff * diff;
}
//3. Then work out the mean of those squared differences.
for (int i = 0; i < b.length; i++) {
variance += b[i]/b.length;
}
//4. Take the square root of that and you are done!
double standardDeviation = Math.sqrt(Math.ceil(variance));
return standardDeviation;
}
```

I tried following this algorithm/formula:

http://www.mathsisfun.com/data/standard-deviation.html

I appreciate your help.

So, step by step, the first problem I see is your mean result. You set the mean type to a double (good), but you're finding the result by dividing an int by an int. That means your result will discard anything after the decimal. You get a value plus a ".0" in this case, your mean is "2.0". I always like to toss in a print statement as I code to check that my result is what I expect.

System.out.println("Averag

a. Don't do the division until the loop is finished

b. (and more importantly) 'sum' should be a double. Why?

UPDATE: i see someone's told you why ;)

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.

So - I used:

Open in new window

Lastly, and most importantly, there are two ways to calculate standard deviation (WTF!?!?!). I'm guessing your result is ~10.66, but you're "supposed" to be getting 11.237. This is because one way is figuring for a "sample" population, while the other figures for the entire data set.

This article may help explain that better than I ever could.

http://chemistry.about.com/od/mathsciencefundamentals/a/How-To-Calculate-Standard-Deviation.htm

Suffice it to say, you need to adjust one other line of your code to get the answer they want. In your step 3, make the change:

Open in new window