Java Average Functions

纵饮孤独 提交于 2019-12-10 10:40:07

问题


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!


回答1:


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.



来源:https://stackoverflow.com/questions/10202700/java-average-functions

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!