Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 逻辑错误在哪里?_Java - Fatal编程技术网

Java 逻辑错误在哪里?

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;

我试图计算从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;          
        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。