Java 什么';这个完美数字代码怎么了?
我写了一个完美的数字程序,但当我运行它时,它输出每个数字都是完美的。请帮我找出我的错误 这是我的服务器代码:Java 什么';这个完美数字代码怎么了?,java,perfect-numbers,Java,Perfect Numbers,我写了一个完美的数字程序,但当我运行它时,它输出每个数字都是完美的。请帮我找出我的错误 这是我的服务器代码: public class Perfect { private int number; public Perfect() { number = 0; } public Perfect(int num) { number = num; } public void setPerfect(int
public class Perfect
{
private int number;
public Perfect()
{
number = 0;
}
public Perfect(int num)
{
number = num;
}
public void setPerfect(int num)
{
number = num;
}
public boolean isPerfect()
{
int number = 0;
int div = 0;
int num = 1;
while (num < number)
{
if (number % num == 0)
{
div += num;
}
num++;
}
if ( div == number)
return true;
else
return false;
}
public String toString()
{
if (isPerfect() == true)
return number + " is perfect";
else
return number + " is not perfect";
}
}
公共类完美
{
私有整数;
公共完美
{
数字=0;
}
公共完美(整数)
{
number=num;
}
公共void setPerfect(int num)
{
number=num;
}
公共布尔值isPerfect()
{
整数=0;
int div=0;
int num=1;
while(num
我得到的结果是,我输入的每个数字都是完美的。在
isPerfect
中,您定义了一个局部变量number=0
。这是正在测试的值,而不是字段number
。局部变量隐藏了类字段。我认为您的问题在于:
public boolean isPerfect() {
int number = 0;
...
您可能应该使用对象的字段
number
,而不是使用初始化为零的新变量对其进行阴影处理。行int number=0isPerfect
功能中的code>是您出现问题的原因。您有
int number = 0;
int num = 1;
while (num < number)
{
...
}
哪种测试
while (1 < 0)
if (0 == 0)
return true;
因此,每个数字都是完美的。@user2817151别忘了
if (0 == 0)
return true;