记录一个自己写的bug,
Java 1~1000找完数 ru
for(int i = 2;i <= 1000;i++){
int x = 0;
for(int a = 1;a <= i;a++){
if(i % a == 0){
x += a;
}
}
if(i == x){
System.out.println(x);
}
}
如上图 错误代码 导致 i == x 判断不到true,所以没有结果输出;
瞅了半个小时,我悟了 ,内部的for循环的 a <= i;不对,因为有 = 存在,导致下一步if 判断true ,然后x 追加 a,此时 a = i;,所以循环结束后 x 一定大于 i,下一段代码的if(i == x){ System.out.println(x);}中if 判断不到true,没法输出结果。
正确代码如下
for(int i = 2;i <= 1000;i++){
int x = 0;
for(int a = 1;a < i;a++){
if(i % a == 0){
x += a;
}
}
if(i == x){
System.out.println(x);
}
}
当然,第一次写肯定不会只写这一种bug(新手写bug的能力简直无敌奥),这里记录一下bug情况。
1. 结果带有24;
2. 结果重复;
3.结果带有1;
等等。
(狗头保命)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)