在循环中显示字符串
Displaying strings in a loop
此方法将传递一个整数和 return 字符串“perfect”、“deficient”或“abundant”。
完全数是等于它的因数不包括它自己的总和。
如果排除自身的因素之和小于该数,则该数被认为是不足的。
如果排除自身的因素之和大于该数,则该数是丰富的。
例如,classify(6) “完美”。分类(12)“丰富”
我几乎已经写好了代码,只是它只会打印“abundant”。我哪里搞砸了?
public static boolean isFactor(int a, int b){
if(b%a==0)
return true;
return false;
}
public static String classify(int n){
int sum=0;
for(int i=1; i<n; i++){
if(isFactor(i,n));
sum=sum+i;
}
if(sum==n)
return "perfect";
else if(sum<n)
return "deficient";
else return "abundant";
}
if(isFactor(i,n)) 后有一个分号,所以它是一个带有空块的 if,并且总是执行 sum=sum+i。
由于 if 语句后有分号,总和值计算不正确。
删除 if 语句后的分号
for(int i=1; i<n; i++){
if(isFactor(i,n))
sum=sum+i;
}
你犯了一个粗心的错误!问题在这里:
if(isFactor(i,n));
sum=sum+i;
}
你看到那个分号了吗?那就是问题所在! Java 中的分号表示一个空语句,也就是什么都没有。这意味着当 isFactor(i, n)
return 为真时,什么都不会执行!这也意味着 sum=sum+i
无论如何都会被执行。
这个错误很难识别。这只是额外的 ;
!
此方法将传递一个整数和 return 字符串“perfect”、“deficient”或“abundant”。 完全数是等于它的因数不包括它自己的总和。 如果排除自身的因素之和小于该数,则该数被认为是不足的。 如果排除自身的因素之和大于该数,则该数是丰富的。 例如,classify(6) “完美”。分类(12)“丰富” 我几乎已经写好了代码,只是它只会打印“abundant”。我哪里搞砸了?
public static boolean isFactor(int a, int b){
if(b%a==0)
return true;
return false;
}
public static String classify(int n){
int sum=0;
for(int i=1; i<n; i++){
if(isFactor(i,n));
sum=sum+i;
}
if(sum==n)
return "perfect";
else if(sum<n)
return "deficient";
else return "abundant";
}
if(isFactor(i,n)) 后有一个分号,所以它是一个带有空块的 if,并且总是执行 sum=sum+i。
由于 if 语句后有分号,总和值计算不正确。
删除 if 语句后的分号
for(int i=1; i<n; i++){
if(isFactor(i,n))
sum=sum+i;
}
你犯了一个粗心的错误!问题在这里:
if(isFactor(i,n));
sum=sum+i;
}
你看到那个分号了吗?那就是问题所在! Java 中的分号表示一个空语句,也就是什么都没有。这意味着当 isFactor(i, n)
return 为真时,什么都不会执行!这也意味着 sum=sum+i
无论如何都会被执行。
这个错误很难识别。这只是额外的 ;
!