【发布时间】:2019-06-01 03:40:02
【问题描述】:
我写了一段代码,在将两个数相除后求商,但没有使用乘法、除法或 mod 运算符。
我的代码
public int divide(int dividend, int divisor) {
int diff=0,count=0;
int fun_dividend=dividend;
int fun_divisor=divisor;
int abs_dividend=abs(dividend);
int abs_divisor=abs(divisor);
while(abs_dividend>=abs_divisor){
diff=abs_dividend-abs_divisor;
abs_dividend=diff;
count++;
}
if(fun_dividend<0 && fun_divisor<0){
return count;
}
else if(fun_divisor<0||fun_dividend<0) {
return (-count);
}
return count;
}
我的代码通过了诸如除数=-1、除数=1 或除数=1 和除数=-1 之类的测试用例。但它不能通过像除数 = --2147483648 和除数 =-1 这样的测试用例。但是,当两个输入均为负数时,我有一个 if 语句。
if(fun_dividend<0 && fun_divisor<0){
return count;
}
当我的输入为 -2147483648 和 -1 时,它返回零。我调试了我的代码,发现它无法到达 while 循环的内部语句。它只是检查while循环并终止并执行
if(fun_dividend<0 && fun_divisor<0){
return count;
}
很明显,两个输入都是负数,所以我使用Math.abs 函数将它们设为正数。但是当我尝试查看变量 abs_dividend 和 abs_divisor 的值时,它们会显示负值。
Integer max 可以取 9 位数字。那么我怎样才能通过这个测试用例呢?根据这个测试用例,除数是一个 10 位数字,对整数范围无效。
根据测试用例,我得到的输出应该是 2147483647。
我该如何解决这个错误?
提前谢谢你。
【问题讨论】:
标签: java function if-statement while-loop mod