我写了一个完美的数字程序,但是当我运行它时,输出每个数字都是完美的。请帮我找错。
这是我的服务器代码:
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 :(得分:4)
在isPerfect
中您定义了一个局部变量number = 0
。这是测试的值而不是字段number
。局部变量隐藏了类字段。
答案 1 :(得分:2)
我认为你的问题在这里:
public boolean isPerfect() {
int number = 0;
...
您可能应该使用对象的字段number
,而不是使用初始化为零的新变量对其进行遮蔽。
答案 2 :(得分:1)
int number = 0;
功能中的isPerfect
行是您遇到麻烦的原因。
答案 3 :(得分:0)
你有
int number = 0;
int num = 1;
while (num < number)
{
...
}
测试
while (1 < 0)
所以循环永远不会运行。接下来你有
int div = 0;
if ( div == number)
测试
if (0 == 0)
return true;
因此,每个数字都是完美的。