2016-06-12 44 views
0

私はおそらく非常に単純なジレンマに直面しています。私は、電卓に入力されたすべての数値の平均、合計、および数を計算するプログラムを作成しようとしています。この問題は、1つの入力または3つしか受け入れることができないということです(メソッドのパラメータにリストされている変数の数に依存します)。 add()メソッドを実際に受け入れるにはどうすればいいですかn入力数は事前定義されたセットではなくなりますか?私のメソッドにx個のパラメータを受け入れる方法

メインクラス

public class Calculator 
{ 
    public static void main (String [] args) 
    { 
     AverageCalculator calculation1 = new AverageCalculator(); 
     AverageCalculator calculation2 = new AverageCalculator(); 

     calculation1.add(13); 
     System.out.println("Sum: " + calculation1.getSum()); 
     System.out.println("Count: " + calculation1.getCount()); 
     System.out.println("Average: " + calculation1.getAverage()); 

     System.out.println(); 

     calculation2.add(3, 7, 12); // Error due to method parameters 
     System.out.println("Sum: " + calculation2.getSum()); 
     System.out.println("Count: " + calculation2.getCount()); 
     System.out.println("Average: " + calculation2.getAverage()); 
    } 
} 

これをコンパイルするとき、私はエラーを取得する:

Calculator.java:28: error: method add in class AverageCalculator cannot be applied to given types; 
     calc2.add(3, 7, 12); 

私は、その後どのように私は私のadd()メソッドのに対処するつもりに実行しています機能性。私はそれが何をしなければならないかを知っている、私はループを追加する必要があります確信しています。ただし、解析するための長さはありません。 i = 0; i < calculation 2; i++はありますか? この部分のコメント

二級

public class AverageCalculator 
{ 
    private int sum; 
    private int count; 

    public AverageCalculator() {} 

    public void add (int newNum) // One input due to single parameter 
    { 
     // How to accept the multiple input from main class with this mutator 
     // and successfully manipulate data in this method 
     sum += newNum; 
     count++; 
    } 
    public int getSum() 
    { return sum; } 

    public int getCount() 
    { return count; } 

    public double getAverage() 
    { return (double) sum/count; } 
} 
+1

これは_varargs_と呼ばれています。[Javaではいつvarargsを使用しますか?](http://stackoverflow.com/questions/766559/when-do-you-use-varargs-in- java) – Seelenvirtuose

+0

同様の質問があります。下のリンクを参照してください。 http://stackoverflow.com/questions/17837117/java-sending-multiple-parameters-to-method –

答えて

1

を参照してください。Javaはこれをサポートしています。 Isは "varargs"と呼ばれます。型に "..."を追加すると、何度でも何度も(0回を含めて)それを繰り返すことができますし、関数で配列として処理します。

public void add(int... newNums) { 
    for (int num : newNums) { 
     sum += num; 
     count++; 
    } 
} 

Aあなたはhereもう少しを読むことができます:これは、これを(このコードは完全にテストされていない)が好きでした。

+0

私はそのコードブロック内にある小さな表現のために "悪いオペランド"型のエラーに直面しています。追加はどのように行われますか? – Computer

+0

私の答えのコードを 'add(3、7、12);'でテストしたところ、エラーは発生しませんでした。あなたは私にあなたが得るエラーメッセージを与えることができますか? – Leon

+0

ああ、単純な間違いです、それはすべて修正されています。ありがとうございました。 – Computer

関連する問題