我写下了一个代码,该代码在将两个数相除后不使用商,除法或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的值时,它们显示的是负值。
整数最大值可以为9位数字。那么我怎么能通过这个测试用例呢?根据该测试案例,红利是10位数字,对于整数范围无效。
根据测试用例,我得到的输出应该是2147483647。
我该如何解决该错误?
繁花如伊
动漫人物
相关分类