java平均数函数,Java平均函数

I am new to programming and I am trying to figure out a simple average function. I have written a function to average 3 integers. Now I would like to be able to use any collection class and any number class and get the average. The problem is with these classes you can't use + or / to get the average.

So I am wondering if there are any work-arounds to be able to use these two classes?

here is my first function that works:

package refresh;

import java.util.*;

public class Average {

public static void main( String args[]){

int a, b, c;

float average;

Scanner scanner = new Scanner(System.in);

System.out.println("Enter First Number");

a = scanner.nextInt();

System.out.println("Enter Second Number");

b = scanner.nextInt();

System.out.println("Enter Third Number");

c = scanner.nextInt();

average = (float)(a+b+c)/3;

System.out.println("The Average Is "+average );

}

}

Here what I have so far for my problem:

package refresh;

import java.util.*;

public class Average {

public static void main( String args[]){

Collection numbers;

Number count;

Number average;

Scanner scanner = new Scanner(System.in);

System.out.println("Enter Numbers to be averaged");

numbers = (Collection) scanner.match();

count++;

average = numbers/count;

System.out.println("The Average Is "+average);

}

}

Any help would be great! Thanks for your time!

解决方案

It makes no sense to convert a String into a number (which is what Scanner does) if you don't know what kind of number you're trying to convert it into.

You can represent pretty much any number as a Double. If you need arbitrary precision, use BigDecimal.

The averaging code can be fully generic over the Number interface; just use the doubleValue method. If you need BigDecimal, then it's more complicated and you probably need to do things involving instanceof.