当我在程序中输入两个负数以找到一个数字的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)

09-11 17:25