Update Average.java

1. add int type array
2. The equality of floating-point numbers should be judged by the absolute value of the difference less than a small number
This commit is contained in:
rabbit 2020-08-18 09:50:59 +08:00
parent 9486101fb6
commit 94a65964d8

View File

@ -4,10 +4,13 @@ package Maths;
* Calculate average of a list of numbers
*/
public class Average {
private static final double SMALL_VALUE = 0.00001f;
public static void main(String[] args) {
assert average(new double[]{3, 6, 9, 12, 15, 18, 21}) == 12;
assert average(new double[]{5, 10, 15, 20, 25, 30, 35}) == 20;
assert average(new double[]{1, 2, 3, 4, 5, 6, 7, 8}) == 4.5;
assert Math.abs(average(new double[]{3, 6, 9, 12, 15, 18, 21}) - 12) < SMALL_VALUE;
assert Math.abs(average(new double[]{5, 10, 15, 20, 25, 30, 35}) - 20) < SMALL_VALUE;
assert Math.abs(average(new double[]{1, 2, 3, 4, 5, 6, 7, 8}) - 4.5) < SMALL_VALUE;
int[] array = {2, 4, 10};
assert average(array) == 5;
}
/**
@ -23,4 +26,19 @@ public class Average {
}
return sum / numbers.length;
}
}
/**
* find average value of int array
*
* @param array the array contains element and the sum does not
* excess long value limit
* @return average value
*/
public static int average(int[] array) {
long sum = 0;
for (int i = 0 ; i < array.length; ++i) {
sum += array[i];
}
return (int)(sum / array.length);
}
}