Java 逻辑错误在哪里?
我试图计算从1/1^2到1/n^2的所有数字的总和,其中n是用户输入的整数。我可以编译程序,但我不知道我在哪里犯了逻辑错误,我得到的唯一结果是1.0。提前谢谢Java 逻辑错误在哪里?,java,Java,我试图计算从1/1^2到1/n^2的所有数字的总和,其中n是用户输入的整数。我可以编译程序,但我不知道我在哪里犯了逻辑错误,我得到的唯一结果是1.0。提前谢谢 public static double compute_series (int num) { double sum = 0, denom = 0; for (int n=1; n <= num; n++){ denom = 1/n*n;
public static double compute_series (int num)
{
double sum = 0, denom = 0;
for (int n=1; n <= num; n++){
denom = 1/n*n;
sum = sum + denom;
}
return(sum);
}
你在做整数除法 denom=1/n*n将为任何n>1返回0,因为1/n<1,为n==1返回1。因此,你得到的总数是1 将代码更改为
denom = 1.0/(n*n);
1和n是整数,因此1/n*n使用整数除法计算,并且总是被截断为0。通过使用双文本1.0而不是1,可以避免此问题
此外,由于除法和乘法具有相同的优先顺序,因此应在乘法周围使用括号:
public static double compute_series (int num) {
double sum = 0, denom = 0;
for (int n=1; n <= num; n++){
denom = 1.0/(n*n); // Note the changes here
sum += denom;
}
return(sum);
}
顺便说一句,它应该收敛到1.1.0/n*n==1.0。如果整数运算的n>1,那么您可能希望1.0/n*nBtw 1/n为0。