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。
我做错了什么?
答案 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
是一个整数。