0

完全数プログラムを作成しましたが、実行すると、すべての数が完全であると出力されます。私の間違いを見つけるのを手伝ってください。

これは私のサーバーコードです:

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

そして、私が得た出力は、入力したすべての数字が完璧でした.

4

4 に答える 4

4

isPerfectローカル変数を定義しましたnumber = 0。これはフィールドの代わりにテストされる値numberです。ローカル変数がクラス フィールドを隠しています。

于 2013-11-01T00:10:12.063 に答える
2

あなたの問題はここにあると思います:

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

numberゼロに初期化された新しい変数でシャドウするのではなく、おそらくオブジェクトのフィールドを使用する必要があります。

于 2013-11-01T00:10:38.147 に答える
1

関数int number = 0;内の行が問題の原因です。isPerfect

于 2013-11-01T00:11:35.897 に答える