所以问题就像有一种方法将两个int值用作参数,我们必须存储这两个整数的乘法,但不能存储在int,Long,Double,BigDecimal,String中。结果(乘法)的范围将超出整数范围。
---- method(int a,int b){
return a*b;
}
因此方法签名中的破折号表示访问者正在寻找的期望的返回类型。
答案 0 :(得分:1)
您可以使用 long 基本类型或返回 java.lang.Number 对象类型(它是Java中所有数字框类型的超类型):
public Number method(int a, int b){
return (long)a * b;
}
请注意,您必须将变量之一强制转换为long。
注意:此解决方案要求修改方法的正文!
答案 1 :(得分:1)
您可能会使用以下代码段:
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;
}
这段代码使用简单的位操作来填充一个布尔数组,该布尔数组将产品表示为位。 ({{1}的true
,1
的{{1}})
因为您永远都不能将计算结果存储在任何地方。您需要每次进行计算。