大神们这Java程序怎么修改

package test;

public class text2 {

public static void main(String[] args) {
    double sum=0;

        for(int i=1;i<=5;i++) {
            if(i%2==0) {
                sum=sum-1/i;
            }else {
                sum=sum+1/i;
            }


        }

       System.out.println(sum);
    }


}

这输出怎么总是1.0?

因为1/i = 0;//当 i 1,2,3,4,5时 1/i = 0;这个你懂吧,1%i 在i 为1,2,3,4,5 都为 1
sum = sum + 0;
sum = sum - 0;
所以后来就没变过

 sum=sum-1/(double)i;

sum=sum+1/(double)i;

因为i是整数,所以1/i是整除

把i的数据类型改为double就好了
for(double i=0;i<5;i++)

输出1.0是因为楼主你写的sum是double类型,故输出肯定是浮点数(即带小数点的)。而结果是1.0是因为你的运算
sum=sum-1/i;这句代码只有偶数可以进来,1/i因为i是一个整数,所以求出的结果也会是一个整数,当你把2代进去的时候,其实1/i得到的是0,这里的sum值没有变化。
同理sum=sum+1/i;这里只有第一次i=1时,1/i得到1,后面的奇数1/i都是0,故sum只在i=1的时候值加了1,其它4个数都加减了0.
要改的话:
要输出整形可以把sum声明为int类型
我想楼主应该是少了一个小括号吧sum=(sum-1)/i;如果是这样的话,那sum就必须得是double型了。

在i上乘1.0就可以了

哦 1/1 = 1;更正一下;嘻嘻
图片说明