【问题标题】:Displaying strings in a loop在循环中显示字符串
【发布时间】:2015-09-25 03:13:56
【问题描述】:

此方法将传递一个整数并返回字符串“完美”、“不足”或“丰富”。 完美数是等于不包括自身的因子之和。 如果一个数字不包括它自己的因素之和小于该数字,则该数字被认为是有缺陷的。 如果一个数不包括它自己的因素之和大于该数,则该数是丰富的。 例如,分类(6)“完美”。分类(12)“丰富” 我几乎已经写了代码,只是它只会打印“丰富。我在哪里搞砸了?

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";
}

【问题讨论】:

    标签: java loops for-loop primes


    【解决方案1】:

    因为 if 语句后面有分号,所以总和值计算不正确。

    删除 if 语句后的分号

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        if(isFactor(i,n));
            sum=sum+i;
        }
        

        你看到那个分号了吗?那就是问题所在! Java 中的分号表示一个空语句,也就是什么都没有。这意味着当isFactor(i, n) 返回 true 时,不会执行任何操作!这也意味着sum=sum+i无论如何都会被执行。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多