将整数从一种方法传递到另一种方法

时间:2012-08-03 05:45:55

标签: java arrays

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

我有第一种方法做得很好,但我想从中获取整数和并在第二种方法中使用它,这是否可能?我花了大约一段时间试图研究它没有成功。

像往常一样,任何建议都值得赞赏。到目前为止的代码如下。

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

2 个答案:

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

然而,在一个课程而不是两个课程中,这一切都会更容易