0

参照してください、私は、for ループによってチェックされ、true と判断される除数によって数値を変更することによって機能する除数を取得するブール値メソッドを持っています (最初のものではなく、決定された量の入力に対してプログラムをループするだけです。I'ループの複数の結果を取得してそれらを追加する方法があるかどうかはわかりませんが、それが私がする必要があることです.今、ループの結果を表示していますが、それはデバッグ用でした.出力は、豊富 (追加された除数が数を超えている)、完全 (追加された除数が数に等しい)、または不足 (追加された除数が数よりも小さい) のいずれかになります。

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 本文にステートメントが 1 つしかない場合にのみ機能します。複数のことを行う必要がある場合は、その全体を括弧で囲む必要があります。

また、取得した値で何もしていないため、 isDivisor への最初の呼び出しは役に立ちません。

于 2013-12-05T00:48:58.340 に答える