-1

我一直在尝试为课堂实验室编写一个程序,我相信我几乎拥有它,但它不会将除数(代码中的 div)加到总和中,如果它是完美的则返回 true数字,否则为假。我的代码编译并运行良好,但只会返回 false,大概是因为 sum 保持在 1(它初始化为 1,因为 1 是每个数字的除数)。number 是从构造函数和 set 语句引入的私有 int。

  public boolean isPerfect()
  {
    int x = number -1 ;
    int div = 0;
    int sum = 1;
    while(x> 1)
    {
        if(number % x == 0)
        {
            div =  x;
            sum=+ div;
        }
        x--;
    }
    if(sum == number)
    {
        return true;
    }
    else
    {
        return false;
    }
  }
4

3 回答 3

3

这是倒退。 sum =+ div;应该sum += div;

你所拥有的基本上是sum = (+div)积极的div

于 2012-11-01T20:36:18.147 回答
2

除了+=/=+问题,您的代码还说 1 是一个完美数字,这是不正确的(6 是第一个完美数字)。这是因为你从sum1 开始,循环根本不会执行,然后你比较sumand number,它们等于 1。你可以只为这种特殊情况添加一个检查,例如

if(sum == number && number > 1)...

附加提示 - 而不是:

if(sum == number)
{
    return true;
}
else
{
    return false;
}

您可以使用:

return (sum == number);
于 2012-11-01T20:51:02.317 回答
0

你可以有 sum= sum + div; 或总和+= div;

你的数字变量定义在哪里我猜它类似于 public boolean isPerfect(int number)

于 2012-11-01T20:43:02.183 回答