在循环中显示字符串

时间:2015-09-25 03:13:57

标签: java loops for-loop primes

此方法将传递一个整数并返回字符串“完美”,“缺陷”或“丰富”。 完美数字是等于排除其自身的因子之和的数字。 如果排除其自身的因子之和小于该数,则该数字被认为是不足的。 如果排除其自身的因子总和大于数字,则数量很多。 例如,分类(6)“完美”。分类(12)“丰富” 我几乎已经编写了代码,除了它只会打印#34;丰富。我在哪里陷入困境?

public static boolean isFactor(int a, int b){
    if(b%a==0)
        return true;
    return false;
}
public static String classify(int n){
    int sum=0;
    for(int i=1; i<n; i++){
        if(isFactor(i,n));
        sum=sum+i;
        }
    if(sum==n)
        return "perfect";
    else if(sum<n)
        return "deficient";
    else return "abundant";
}

3 个答案:

答案 0 :(得分:1)

由于在if语句之后有分号,因此无法正确计算总和值。

在if语句后删除分号

 for(int i=1; i<n; i++){
        if(isFactor(i,n))
            sum=sum+i;
 }

答案 1 :(得分:0)

在if(isFactor(i,n))之后你有一个分号,所以它是一个带有空块的if,并且sum = sum + i总是被执行。

答案 2 :(得分:0)

你犯了一个粗心的错误!问题出在这里:

if(isFactor(i,n));
    sum=sum+i;
}
你看到半结肠吗?那就是问题所在! Java中的分号表示空语句,即无。这意味着当isFactor(i, n)返回true时,不会执行任何操作!这也意味着无论如何都会执行sum=sum+i

这个错误很难识别。这只是额外的;