1

2 つの方法でプログラムを作成しようとしています。1 つ目は整数を取り、その約数とその約数の合計を出力します。2 つ目は、指定された整数がその約数の合計 (完全数) と等しいかどうかを返すブール関数です。

最初の方法はうまくいきましたが、そこから整数の合計を取り、2 番目の方法で使用したいのですが、これは可能ですか? 私はそれを研究しようとしてかなりの時間を費やしましたが、成功しませんでした.

いつものように、すべてのアドバイスに感謝します。これまでのコードは以下です。

import java.util.Scanner;
import java.io.*;

class arrayTest {

public static int sumFacs(int n) {

    int sumDiv[] = new int[50];
    int c = 0;
    int sum=0;

    if(n<0){
        System.out.println("Sorry I dont do negatives!");
    }

    else {

    for(int i=1; i<=n; i++){
        int j = n%i;

        if(j==0){
            System.out.println( i + " is a divisor of " + n + "\n");
            sumDiv[c] = i;
            c++;
        }

    }

    for (int i=0; i<sumDiv.length; i++){
    sum += sumDiv[i];}

    System.out.println("The sum of the divisors of " + n + " is: " + sum);

}
    return sum;
}

public static boolean isPerfect(int n, int sum) {

boolean b = (n == sum);
if(b){
    System.out.println( n + " is a perfect number.");
}

else {
    System.out.println( n + " is not a perfect number.");
}
}




public static void main(String[] args){

Scanner scanner = new Scanner(System.in);
    System.out.println("Please enter a positive integer.");
    int n = scanner.nextInt();

 sumFacs(n);
 int sumDivisors = sumFacs(n);
 System.out.println(isDivisors(sumFacs(n), n));

 isPerfect(n, sum);
}
}
4

2 に答える 2

1

あなたsumFacsは整数を返すので、isPerfectメソッドで得られるものは何でも確実に使用できます。現在行っているように、同じ番号をメソッドに渡しています。やりたいことをするには、次のようにする必要があります。

int sumFacsResult = sumFacs(n);     //Take whatever value sumFacs yields, store it in sumFacsResult
System.out.println(isPerfect(sumFacsResult, n);    //Take the result of sumFacs and pass it to the isPerfect method

または略記:

System.out.println(isPerfect(sumFacs(n), n));    //It is usually recommended to use the other approach, for readability purposed.

そして、あなたのisPerfect方法は次のようになるはずです:

public static boolean isPerfect(int sum, int number)
{
    return sum == number;
}
于 2012-08-03T05:52:37.340 に答える
0

あなたsumFacs(int n)の戻り値の型はintであり、合計を返していますが、そのメソッドを呼び出す場所では何も設定していないため、やりたいことは次のとおりです。

int foo = sumFacs(n);  
isPerfect(n,foo);

そしてあなたのisperfectクラスを作ります

public static void isPerfect(int n, int foo)
{ 
  if((n==foo) 
  {     
    System.out.println( n + " is a perfect number."); 
  }else{    
    System.out.println( n + " is not a perfect number."); 
  }
} 

ただし、これはすべて 2 つではなく 1 つのクラスで簡単になります

于 2012-08-03T05:52:30.803 に答える