Java 计算完全数

Java 计算完全数,java,boolean,static-methods,boolean-logic,perfect-numbers,Java,Boolean,Static Methods,Boolean Logic,Perfect Numbers,看,我有一个布尔方法,它通过修改一个除数来获得除数,这个除数由for循环检查并确定为true(不是第一个,它只是循环程序以确定输入量)。 我不确定是否有办法将循环的多个结果相加,但这正是我需要做的。现在我正在显示循环的结果,但这是为了调试,最后输出的结果将是是否丰富(添加的除数大于数字)、完美(添加的除数等于数字)或不足(添加的除数小于数字) 以下是eclipse中的代码: import java.util.*; public class PerfectNumber { /**

看,我有一个布尔方法,它通过修改一个除数来获得除数,这个除数由for循环检查并确定为true(不是第一个,它只是循环程序以确定输入量)。 我不确定是否有办法将循环的多个结果相加,但这正是我需要做的。现在我正在显示循环的结果,但这是为了调试,最后输出的结果将是是否丰富(添加的除数大于数字)、完美(添加的除数等于数字)或不足(添加的除数小于数字) 以下是eclipse中的代码:

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

}
import java.util.*;
公共类完备性编号{
/**
*@param args
*/
公共静态void main(字符串[]args){
对于(int i=0;i<15;i++)
{
扫描仪阅读器=新扫描仪(System.in);
整数=0;
整数除数=1;
int addnum=0;
System.out.println(“请输入一个数字以检查它是否完美、丰富或不足”);
number=reader.nextInt();
for(除数=1;除数<数字;除数++)
{
isDivisor(数、除数);
if(isDivisor(数字、除数)==真)
{
System.out.println(除数);
}
}
}   
}
静态布尔isDivisor(整数、整数除数)
{
if(数字%除数==0)
返回true;
其他的
返回false;
}
}

如果要在循环中求和,可以使用以下语句:

Int sum;
// your for loop start
    If ( isDivisor(number, divisor))
        sum += divisor;
   // end of loop
   //here you can do the comparison.
在if语句中不需要与true进行比较。此外,只有在if主体中只有一条语句时,此代码段才有效。如果需要执行多项操作,则必须将整个代码段括在括号中


此外,您第一次打电话给isDivisor也没用,因为您没有用所获得的价值做任何事情。

回答您的直接问题,什么闻起来像是家庭作业问题;)

我不确定是否有办法将循环的多个结果相加

您可以检查函数的返回,就像您已经在做的那样,并增加一个计数器

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;
} 
公共布尔isSeven(int x){
返回x==7;
}
公共静态void main(字符串[]args){
int-sumOfSevens=0;
int i=0;
而(i<10){
if(偶数(7)){
sumOfSevens=sumOfSevens+7;//或+=
++一,;
}
}
//在这一点上,sumOfSevens=70;
} 

您不需要
isDivisor
,因为它等于以下表达式:

number % divisor == 0
只要把除数加起来:

int  numDivSum = 0;       

for(divisor = 1; divisor < Math.sqrt(number); divisor++)
{

    if(number % divisor == 0)
    {
        numDivSum += divisor;
    }
}
int numDivSum=0;
for(除数=1;除数

检查
numDivSum
是否完美、丰富或不足。

为了澄清,您的意思是如果
isDivisor
返回true,您希望将该除数(而不是数字)添加到所有其他true
isDivisor
数字中?