browse
package org.megha.blog.example.part8;
public class MyMath {
/**
* Calculates the average of the numbers provided.
*
* @param numbers the numbers to average over.
* @throws IllegalArgumentException if no numbers a specified
*/
public static double average(int... numbers) {
// note the use of var-args above. java collapses all the arguments into an array
if (numbers.length == 0) {
throw new IllegalArgumentException("no numbers to average over!");
}
int sum = 0;
for(int i : numbers) {
sum = sum + i;
}
return ((double) sum) / numbers.length;
}
public static void main(String args[]) {
// averaging works over any number of arguments
System.out.println(MyMath.average(1, 2, 3, 7, 9, 10));
System.out.println(MyMath.average(55, 77));
System.out.println(MyMath.average(3));
// but when it's called with no arguments, an unchecked exception is thrown.
// ofcourse, we know about it already, so we have a try/catch block in place.
// unchecked/runtime exceptions usually happen when some assumed condition, or
// an api contract is not met by the programmer. eg passing in a null, where
// null is not expected, or trying to lookup into an array beyond it's bounds.
try {
System.out.println(MyMath.average());
} catch (IllegalArgumentException e) {
System.out.println("Exception caught: " + e);
}
System.out.println("still running... :)");
}
}
No comments:
Post a Comment