所以问题就像有一个方法将两个 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
表示1
,false
表示0
(
因为您永远不允许将计算存储在任何地方。您需要每次都计算它。
您可以使用长基元类型或返回java.lang.Number对象类型(这是 java 中所有数字盒装类型的超类型(:
public Number method(int a, int b){
return (long)a * b;
}
请注意,您必须将其中一个变量转换为 long。
注意:此解决方案需要修改方法的主体!