2016-12-12 8 views
0

私はいくつかの値をとり、それらを乗算するオーバーロードされたメソッドのペアを作成することが任されています。私は物事をきれいに保つために配列を使用することに決めましたが、私のメソッドは期待どおりに動作していないようです。オーバーロードされたメソッドに配列の値を渡すにはどうすればよいですか?あなたは何ができるかオーバーロードされたメソッドに配列値を渡すにはどうすればよいですか?

import java.util.Scanner ; 

class Lab8Ex4 { 

    public static void main (String[] args) { 
     //Declare Variables 
     int[] numbers = new int[5] ; 

     //Setup a scanner. 
     Scanner scan = new Scanner (System.in) ; 

     /////////////////// 
     //Get User Input// 
     /////////////////// 

     for (int j = 0 ; j < 5 ; j++) { 
      System.out.println ("Please enter a number: ") ; 
      numbers[j] = scan.nextInt() ; 
     } 

     //Call the first method 
     multiply (numbers[0], numbers[1]); 
     //Call the second method 
     multiply (numbers[2], numbers[3], numbers[4]); 
    } 

    //Overloaded Method - Multiplication of two numbers. 
    static int multiply (int a, int b) { 
     int sum = a * b ; 
     return sum ; 
    } 

    //Overloaded Method - Multiplication of three numbers. 
    static int multiply (int a, int b, int c) { 
     int sum = a * b * c ; 
     return sum ; 
    } 
} 
+4

それを呼び出すために?何が起こると思いますか?両方のメソッドが呼び出され、結果が計算されますが、結果は使用されません。 –

+2

(変数 'sum'は' product'と呼ぶべきです) –

+2

@ModusTollensによれば、あなたのメソッドは呼び出されますが、あなたは何もしません。結果をログに記録してください(例: 'System.out.println("最初の乗算結果は次のとおりです: "+掛け算(numbers [0]、numbers [1]));' –

答えて

0

は、これです

static int multiply(int... values) { 
    int product = 1; 

    for(int v : values) { 
     product *= v; 
    } 

    return product; 
} 

そして期待通りに動作しません何、

int a = 1; 
int b = 2; 
int c = 3; 

System.out.println(multiply(a)); 
System.out.println(multiply(a, b)); 
System.out.println(multiply(a, b, c)); 
関連する問題