【问题标题】:Java - multiplication of variables through parametersJava - 通过参数的变量乘法
【发布时间】:2017-12-22 19:50:03
【问题描述】:

通过方法参数计算整数变量乘积的最佳方法是什么?我曾尝试使用诸如“*”之类的数学符号来获得结果,但没有成功,我迷失了答案。任何建议将不胜感激,在此先感谢。

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

【问题讨论】:

  • 向我们展示您的尝试,也许我们可以帮助您
  • 我怀疑问题出在数学上。您“获得结果”的尝试更有可能以某种方式搞砸了(忘记返回值,试图将返回值分配给参数等)。但是,如果没有看到您的代码,就不可能说出来。试图描述你的代码几乎总是毫无意义的。您需要edit 您的问题以包含相关代码以及您的问题到底是什么,包括任何编译错误、完整堆栈跟踪、预期与实际输出等。
  • 问题已更新

标签: java parameters multiplication


【解决方案1】:

如果你想从整数相乘中得到一个整数值,你可以试试

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

【讨论】:

  • 尝试使用除法而不是乘法的代码 - 您可能会注意到在上一个示例中使用的强制转换会丢失精度。使用双参数或在除法之前强制转换两个操作数以获得适当的精度。
  • 刚刚编辑了我的答案,感谢您的告知。我没有太注意这样一个事实,即不将整数转换为 double 可能会丢失返回值的乘法精度
  • 使用乘法似乎一切正常,但我只是想警告你,当使用这种类型的除法而不是乘法转换时,你可能会给自己带来一些麻烦。我认为您的代码实际上没有任何问题,但我认为这可能是指出该代码适用于乘法的好地方,但可能不太适用于除法。干杯!
【解决方案2】:

定义 TriFunction

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

然后,使用它:

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

【讨论】:

  • 按下选择,我定义TriFunction&lt;Integer, Integer, Integer, Long&gt; triMult = (x, y, z) -&gt; (long)x * y * z;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-20
  • 2013-02-19
相关资源
最近更新 更多