2017-12-22 54 views
-5

メソッドパラメータを使用して整数変数の積を計算する最良の方法は何ですか?私は結果を得るために '*'のような数学的な記号を使ってみましたが、何も成功しておらず、私は答えが失われています。アドバイスをいただければ幸いです。Java - パラメータによる変数の乗算

int productOfThreeNumbers(int number1, int number2, int number3){ 
     productOfThreeNumbers(number1 * number2 * number3); 
     return 0; 
    } 
+1

http://idownvotedbecau.se/nocode/ – Andreas

+0

私たちにあなたの試行を見せてください。そしておそらく私たちはあなたを助けることができます –

+0

私はそれが問題である数学であるとは思っていません。 「結果を得る」というあなたの試みは、何とか失敗してしまいます(値を返すことを忘れたり、戻り値をパラメータに割り当てるなど)。しかし、あなたのコードを見ずに言うことは不可能です。あなたのコードを記述しようとするのは、ほとんど常に無意味です。関連するコードと、コンパイルエラー、完全なスタックトレース、期待されるものと実際の結果など、あなたの問題が何であるかを含めるには、質問を編集する必要があります。 – azurefrog

答えて

1

あなたが整数の乗算から整数値を取得したい場合は、あなたが使用できるdouble値を取得したい場合は、

public Integer mult(int a,int b){ 
      int c = a*b; 
      return c; 
    } 

を試みることができる:

public double mult(int a,int b){ 
      double n1 = (double) a; 
      double n2 = (double) b; 
      double c = n1*n2; 
      return c; 
    } 

あなたはメソッドを呼び出す:

int a = 1; 
    int b = 2; 
    int c = mult(a,b); 

または

int a = 1; 
    int b = 2; 
    double c = mult(a,b); 

、使用している方法によって異なります。

しかし、あなたのコードを見ているだけでください:

int productOfThreeNumbers(int number1, int number2, int number3){ 
    return (number1 * number2 * number3); 
    } 
+0

コードを分割最後の例で使用するキャストで精度が失われることに気付くかもしれません。適切な精度を得るには、除算の前にdoubleパラメーターを使用するか、両方のオペランドをキャストします。 –

+1

は私の答えを編集しました。整数を2倍にキャストしないと返り値の乗算の精度が失われる可能性があるという事実にあまり注意を払っていませんでした –

+0

乗算ではすべてが正常であるようですが、これを使用すると乗算の代わりに除算を使用したキャストのタイプを使用すると、いくつかの問題を解決できます。実際にコードに何も問題はなかったと思いますが、このコードは乗算でうまくいくことを指摘するのには良い場所だと思っていましたが、除算ではあまりうまくいかないかもしれません。乾杯! –

1

@FunctionalInterface 
interface TriFunction<A,B,C,R> { 
    R apply(A a, B b, C c); 
} 

その後TriFunctionを定義し、それを使用する:

public class Main { 
    public static void main(String[] args) { 
     TriFunction<Integer, Integer, Integer, Integer> triMult = (x,y,z) -> x*y*z; 
     System.out.println(triMult.apply(2, 1, 3)); 
    } 
} 
+0

選択するには、 'TriFunction を定義したいと思う。triMult =(x、y、z) - >(long)x * y * z;' – greybeard