0

看,我有一个布尔方法,它通过一个除数修改数字来获取除数,该除数由一个 for 循环检查并确定为真(不是第一个,它只是循环程序以获得确定的输入量。我'我不确定是否有某种方法可以获取循环的多个结果并将它们加在一起,但这是我需要做的。现在我正在显示循环的结果,但那是为了调试,最后输出将是丰富(添加的除数大于数字),完美(添加的除数等于数字)或不足(添加的除数小于数字)这是eclipse中的代码:

import java.util.*;
public class PerfectNumber {

    /**
     * @param args
     */
    public static void main(String[] args) {
        for(int i = 0; i < 15; i++)
        {
            Scanner reader = new Scanner(System.in);
            int number = 0;
            int divisor = 1;
            int addnum = 0;
            System.out.println("Please input a number to check if it is perfect, abundant, or deficient");
            number = reader.nextInt();

            for(divisor = 1; divisor < number; divisor++)
            {
                isDivisor(number, divisor);
                if(isDivisor(number, divisor) == true)
                {
                    System.out.println(divisor);
                }
            }
        }   
    }

    static boolean isDivisor(int number, int divisor)
    {
        if (number % divisor == 0)
            return true;
        else 
            return false;
    }

}
4

3 回答 3

1

回答什么似乎是你的直接问题,什么闻起来像家庭作业问题;)

我不确定是否有某种方法可以获取循环的多个结果并将它们加在一起

你可以检查你的函数的返回,因为你已经在做并增加一个计数器

public boolean isSeven(int x){
    return x == 7;
}

public static void main(String[] args){
    int sumOfSevens= 0;
    int i = 0;
    while(i < 10){
        if(isSeven(7)){
            sumOfSevens = sumOfSevens + 7; // or +=
            ++i;
        }
    }
    // At this point sumOfSevens = 70;
} 
于 2013-12-05T00:55:07.430 回答
1

您不需要isDivisor,因为它等于以下表达式:

number % divisor == 0

只需总结除数:

int  numDivSum = 0;       

for(divisor = 1; divisor < Math.sqrt(number); divisor++)
{

    if(number % divisor == 0)
    {
        numDivSum += divisor;
    }
}

检查是numDivSum完美的、丰富的还是不足的。

于 2013-12-05T01:05:11.307 回答
0

如果你想在一个循环中求和,你可以使用如下语句:

Int sum;
// your for loop start
    If ( isDivisor(number, divisor))
        sum += divisor;
   // end of loop
   //here you can do the comparison.

在您的 if 语句中无需与 true 进行比较。此外,如果您在 if 正文中只有一个语句,则此代码段仅适用。如果你需要做多件事,你必须把整个事情放在括号里。

此外,您对 isDivisor 的第一次调用是无用的,因为您没有对所获得的价值做任何事情。

于 2013-12-05T00:48:58.340 回答