在Java中存储不使用int,long,double,String,BigDecimal 的两个整数乘法结果



所以问题就像有一个方法将两个 int 值作为参数,我们必须存储这两个整数的乘法,但不存储在 int、Long、Double、BigDecimal、String 中。结果(乘法(的范围将超出整数范围。

---- method(int a,int b){
return a*b;
}

因此,方法签名中的破折号表示面试官正在寻找的所需返回类型。

您可以使用以下代码片段:

public boolean[] method(int a, int b){
boolean[] bits = new boolean[64]; // max amount of long bits
for(long l = 0, bit = 1; l < bits.length; l++){
bits[(int) l] = (((long) a * b) & bit) == bit;
bit <<= 1;
}
return bits;
}

这段代码使用简单的位运算来填充一个布尔数组,该数组将产品表示为位。(true表示1false表示0(

因为您永远不允许将计算存储在任何地方。您需要每次都计算它。

您可以使用基元类型或返回java.lang.Number对象类型(这是 java 中所有数字盒装类型的超类型(:

public Number method(int a, int b){
return (long)a * b;
}

请注意,您必须将其中一个变量转换为 long。

注意:此解决方案需要修改方法的主体!

最新更新