| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 413 人关注过本帖
标题:在 for 循环里嵌套 if 语句的问题
只看楼主 加入收藏
小月饼
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2013-11-3
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:1 
在 for 循环里嵌套 if 语句的问题
计算S=1-1/2+1/3-1/4+…+1/(n-1)-1/n   当n=100时S=?


我写的代码如下:
程序代码:
public class HW {

    public static void main(String[] args) {
        double n = 100,sum1=0,sum2=0,sum=0;
        for(int i = 1;i < (n+1); i++){
            if(i%2!=0){
                sum1 +=(1/i);
            }
            else{
                sum2 += (-1/i);
            }
        }
        sum=sum1+sum2;
        System.out.println("SUM="+sum);

        }
}


我的想法是用For循环,然后用If判断奇数偶数然后分开累加,最后再加在一起。
可是不知道为什么,进入If判断一次后就直接跳出了for循环然后输出结果了。
然后我就只能换while来写,求大神帮忙解惑。
2014-10-02 19:40
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:20 
就是精度问题,这个注意一下,或者自己百度一下精度方面的问题。
帮你修改了。
程序代码:
     public static void main(String[] args) {
            double n = 100,sum1=0,sum2=0,sum=0;
            for(int i = 1;i < (n+1); i++){
                if(i%2!=0){
                    sum1 +=(1.0/i);
                }
                else{
                    sum2 += -(1.0/i);
                }
            }
            sum=sum1+sum2;
            System.out.println("SUM="+sum);

            }

其实跟我的也差不多,我是一次性计算,最后求结果。
程序代码:
public static void main(String[]args){
    int j;
     double sum=0;
    System.out.println("---start---");
    for(int i=1;i<=100;i++){
        if(i%2==0){
            j=-1*i;
        }else{
            j=i;
        }
        sum=sum+1.0/j;
    }
    System.out.println("1-1/2+1/3-1/4+…+1/(n-1)-1/n="+sum);
    System.out.println("---end---");
}
收到的鲜花
  • 小月饼2014-10-03 02:25 送鲜花  1朵   附言:太感谢了,终于解决了。这个问题心塞一天了 ...

思考赐予新生,时间在于定义
2014-10-03 00:33
快速回复:在 for 循环里嵌套 if 语句的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016894 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved