2012-04-18 48 views
2

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

これら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

残念ながら、+と/を使用して難易度を乗り越える良い方法はありません。特定の数値型の+と/論理をカプセル化する 'plus'と' divide'メソッドをオブジェクトの周りに渡すのが最も良い方法でしょう。 –

+0

double(Scanner.nextDouble)を使用する場合は、すべての数字をカバーします。 +と/は、Adamはすでに適切な名前のメソッドを使うようにアドバイスしました。 – Jayan

答えて

2

それはあなたがに変換しようとしている番号の種類がわからない場合は(スキャナが何をするかである)数に文字列を変換しても意味がありません。

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

平均化コード番号インターフェース上完全に汎用であってもよいです。単にdoubleValueメソッドを使用します。 BigDecimalが必要な場合は、より複雑で、おそらくinstanceofを含むことをする必要があります。