1

尝试用两种方法编写程序。第一个接受一个整数并打印其除数以及除数之和,第二个是一个布尔函数,如果给定整数等于其除数之和(完美数),则返回。

我的第一种方法做得很好,但我想从中获取整数和并在第二种方法中使用它,这甚至可能吗?我花了相当长的时间试图研究它,但没有成功。

像往常一样,任何和所有的建议表示赞赏。到目前为止的代码如下。

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 并且您正在返回 sum 但是在调用该方法的地方您没有将其设置为任何内容,因此您想要做的是:

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

让你的完美课堂

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

然而,在一类而不是二类中这一切都会更容易

于 2012-08-03T05:52:30.803 回答