2

私はプログラミングが初めてで、単純な平均関数を理解しようとしています。3 つの整数を平均化する関数を作成しました。ここで、任意のコレクション クラスと任意の数値クラスを使用して平均を取得できるようにしたいと考えています。問題は、これらのクラスでは + または / を使用して平均を取得できないことです。

これら2つのクラスを使用できるようにするための回避策があるかどうか疑問に思っていますか?

これが機能する私の最初の機能です:

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

どんな助けでも素晴らしいでしょう!御時間ありがとうございます!

4

1 に答える 1

2

変換しようとしている数値の種類がわからない場合は、文字列を数値に変換しても意味がありません(これはScannerが行うことです)。

ほぼすべての数値をDoubleとして表すことができます。任意精度が必要な場合は、BigDecimalを使用してください。

平均化コードは、Numberインターフェースを介して完全に汎用化できます。doubleValueメソッドを使用するだけです。BigDecimalが必要な場合、それはより複雑であり、おそらくinstanceofを含むことを行う必要があります。

于 2012-04-18T04:28:04.153 に答える