Java 什么';这个完美数字代码怎么了?

Java 什么';这个完美数字代码怎么了?,java,perfect-numbers,Java,Perfect Numbers,我写了一个完美的数字程序,但当我运行它时,它输出每个数字都是完美的。请帮我找出我的错误 这是我的服务器代码: public class Perfect { private int number; public Perfect() { number = 0; } public Perfect(int num) { number = num; } public void setPerfect(int

我写了一个完美的数字程序,但当我运行它时,它输出每个数字都是完美的。请帮我找出我的错误

这是我的服务器代码:

public class Perfect
{
   private int number;

    public Perfect()
    {
        number = 0;
    }

    public Perfect(int num)
    {
        number = num;
    }

    public void setPerfect(int num)
    {
        number = num;
    }

    public boolean isPerfect()
    {
        int number = 0;
        int div = 0;
        int num = 1;
        while (num < number)
        {
            if (number % num == 0)
            {
                div += num;
            }
            num++;
        }

        if ( div == number)
            return true;

        else    
            return false;
    }

   public String toString()
    {
        if (isPerfect() == true)
          return number + " is perfect";
        else
          return number + " is not perfect";
    }
}
公共类完美
{
私有整数;
公共完美
{
数字=0;
}
公共完美(整数)
{
number=num;
}
公共void setPerfect(int num)
{
number=num;
}
公共布尔值isPerfect()
{
整数=0;
int div=0;
int num=1;
while(num

我得到的结果是,我输入的每个数字都是完美的。

isPerfect
中,您定义了一个局部变量
number=0
。这是正在测试的值,而不是字段
number
。局部变量隐藏了类字段。

我认为您的问题在于:

public boolean isPerfect() {
    int number = 0;
    ...

您可能应该使用对象的字段
number
,而不是使用初始化为零的新变量对其进行阴影处理。

int number=0isPerfect
功能中的code>是您出现问题的原因。

您有

int number = 0;
int num = 1;
while (num < number)
{
...
}
哪种测试

while (1 < 0)
if (0 == 0)
    return true;
因此,每个数字都是完美的。

@user2817151别忘了
if (0 == 0)
    return true;