尝试用两种方法编写程序。第一个采用整数并打印其除数以及它的除数之和,第二个是布尔函数,如果给定的整数等于其除数的总和(完整数),则返回。
我有第一种方法做得很好,但我想从中获取整数和并在第二种方法中使用它,这是否可能?我花了大约一段时间试图研究它没有成功。
像往常一样,任何建议都值得赞赏。到目前为止的代码如下。
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);
}
}
答案 0 :(得分: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;
}
答案 1 :(得分:0)
你的sumFacs(int n)
的返回类型为int,而你正在返回sum,但是你调用该方法时你没有将它设置为任何东西,所以你想要做的是:
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.");
}
}
然而,在一个课程而不是两个课程中,这一切都会更容易