我刚刚开始学习编码,并希望尝试制作一个程序来帮助找到今天给定数字的所有完美数字。这些都行不通。没有错误消息显示在Eclipse上,所以我猜错误是合乎逻辑的(?)以下是相关的代码片段,有人可以告诉我错误在哪里吗?
protected void actionPerformedProcessBtn(ActionEvent arg0) {
txtS.setText("");
int limit = Integer.parseInt(txtAmmount.getText()), a = 1, b = 1, c = 0;
while (a <= limit) {
while(a > b) {
if (a % b != 0) {
b++;
}
else {
c = c + b;
b++;
}
}
if (c == a)
txtS.append(a + "\n");
a++;
}
}
void ActionPerformedDoBtn(ActionEvent arg0) {
int c = 1, d, e;
txtS.setText("");
while (c <= 1000) {
d = 0;
e = 0;
while(d < c) {
if(c % d == 0)
e += d;
d++;
}
if (e == c)
txtS.append("Perf Num:" + c);
c++;
}
}
答案 0 :(得分:1)
您需要为a的每个值重新初始化b和c。
假设你正在研究a = 9,所以你将b增加到8,检查9是否可以被8整除,然后将b增加到9,退出循环时(a> b)。现在将a设置为10.此时,b已经等于上一次迭代中的9。因此,检查10是否可以被9整除,而不是。
int b = 1,c = 0;属于里面 while(一个&lt; = limit)循环。