【问题标题】:Java Average FunctionsJava 平均函数
【发布时间】:2012-04-18 04:18:04
【问题描述】:

我是编程新手,我正在尝试找出一个简单的平均函数。我写了一个函数来平均 3 个整数。现在我希望能够使用任何集合类和任何数字类并获得平均值。问题在于这些类您不能使用 + 或 / 来获得平均值。

所以我想知道是否有任何变通方法可以使用这两个类?

这是我的第一个功能:

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 );
}
 }

这是我目前遇到的问题:

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);
}
}

任何帮助都会很棒!感谢您的宝贵时间!

【问题讨论】:

  • 不幸的是,没有很好的方法来解决 + 和 / 的困难。最好的办法可能是使用 plusdivide 方法传递一个对象,它封装了特定数字类型的 + 和 / 逻辑。
  • 如果您使用双精度 (Scanner.nextDouble ),则涵盖所有数字。至于 + 和 /,Adam 已经建议你使用合适名称的方法。

标签: java average


【解决方案1】:

如果您不知道要将字符串转换成什么样的数字,那么将字符串转换为数字(这就是 Scanner 所做的)是没有意义的。

您几乎可以将任何数字表示为 Double。如果您需要任意精度,请使用 BigDecimal。

平均代码可以在 Number 接口上完全通用;只需使用 doubleValue 方法。如果你需要 BigDecimal,那么它会更复杂,你可能需要做一些涉及 instanceof 的事情。

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多