当我在程序中输入两个负数以找到一个数字的LCM和HCF时,HCF返回0。它对正数有效。这是HCF模块的代码。我该如何解决?
static int hcf(int x, int y){
int hcf = 0;
for (int i = x; i>=1; i--){
if (y%i==0 && x%i==0){
hcf = i;
break;
}
}
return hcf;
}
最佳答案
如果x
小于或等于0,则将使用i
值初始化x
,并且由于for
条件,i >= 1
循环将不执行任何操作,因此该方法将返回0。
可能您应该尝试将i
初始化为(int)Math.abs(x)
。