【问题标题】:What's wrong with this perfect number code?这个完美的数字代码有什么问题?
【发布时间】:2014-06-18 21:01:06
【问题描述】:

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

这是我的服务器代码:

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

我得到的输出是我输入的每个数字都是完美的。

【问题讨论】:

    标签: java perfect-numbers


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    我认为你的问题在这里:

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

    您可能应该使用对象的字段number,而不是使用初始化为零的新变量来隐藏它。

    【讨论】:

      【解决方案3】:

      isPerfect 函数内的int number = 0; 行是造成您麻烦的原因。

      【讨论】:

        【解决方案4】:

        你有

        int number = 0;
        int num = 1;
        while (num < number)
        {
        ...
        }
        

        哪个测试

        while (1 < 0)
        

        所以循环永远不会运行。接下来你有

        int div = 0;
        if ( div == number)
        

        哪个测试

        if (0 == 0)
            return true;
        

        因此每个数字都是完美的。

        【讨论】:

          猜你喜欢
          • 2014-11-16
          • 2012-08-07
          • 2014-08-29
          • 2013-06-05
          • 2014-06-04
          • 2011-07-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多