for循环中的求和

时间:2015-02-12 17:12:55

标签: java

import java.util.Scanner;

class Summation{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.println("How many summands?");
        int j = scanner.nextInt();
        double sum = 0.0;
        for(int i = 2; i <= j*2;i+=2){
            sum = sum + ((i-1)/(i+1));
        }
        System.out.printf("The sum is approximately %.3f %n",sum);
    }
}

尝试将值1/3 + 3/5 + 5/7 ...求和到预定的加数计数。问题是for循环不会增加总和。每次它说总和是0.000。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您在此处执行整数除法:

(i-1)/(i+1)

即使它最终被分配到double,此计算也会使用int执行,因此该分部也必须是int。每个部门都会生成0,因此总和为0

将其中一个投射为double以强制进行浮点计算。

sum = sum + ( (double) (i-1) / (i+1));

答案 1 :(得分:1)

您需要将操作数强制转换为double

sum = sum + ((double)(i - 1) / (i + 1));

表达式(i - 1) / (i + 1))保持为零,因为变量i是一个整数。