为了账号安全,请及时绑定邮箱和手机立即绑定

计算1至100之间不能被3整除的数之和?

计算1至100之间不能被3整除的数之和?

yuanyuan_0005 2016-02-18 20:45:56
for(int ima=1,sum=0;ima%3!=0&&ima<100;++ima,sum=sum+ima){ System.out.println(sum); }是哪里出了问题?
查看完整描述

6 回答

?
Its_forever

TA贡献361条经验 获得超328个赞

你这样写代码的可读性太差了,也容易把自己搞晕。在main函数里面试一试这样

		int sum=0;
		for (int i = 1; i <=100; i++) {
			if(i%3!=0){
				System.out.println(i);
				sum+=i;
			}
		}
		System.out.println(sum);	


查看完整回答
5 反对 回复 2016-02-18
?
keiu

TA贡献3条经验 获得超6个赞

基本功太差

for的第2个条件只要失败则for就停止运行了

so 当ima=3时循环体就结束了

而且你要求的是"和"

而不是每次的sum

查看完整回答
2 反对 回复 2016-02-19
  • keiu
    keiu
    int sum=0; for(int ima=1,sum=0;ima<100;ima%3==0?sum=sum+ima++:ima++); System.out.println(sum); 试试
?
专注感觉

TA贡献4条经验 获得超1个赞

ima%3!=0&&ima<100 这个条件,在ima=3的时候 ima%3 为false, 与ima<100并集,也是false。false,就for循环就结束。
 

查看完整回答
1 反对 回复 2016-02-19
?
Davidham3

TA贡献8条经验 获得超0个赞

出问题的主要原因是,for循环中的第二项,ima % 3 != 0

一旦ima % 3 != 0不成立,就比如ima等于的时候,这个时候,(ima%3!=0&&ima<100)这项就是false,for循环中的第二项一旦为false,就会停止循环,不再继续,因此应该改为

for(int ima=1, sum=0; ima<100; ++ima, sum=sum+ima){
    if(ima%3!=0)
        continue;
    System.out.println(sum);
}

但是,非常不建议你写成这样,因为这样的代码可读性太差,别人维护起来很困难。

查看完整回答
反对 回复 2016-02-27
?
水煮风云彡

TA贡献1条经验 获得超1个赞

for(int a=1,b=0;a*3<100;b+=a*3,a++){

System.out.println(b);

}


查看完整回答
1 反对 回复 2016-02-19
?
qq_灰太狼_27

TA贡献7条经验 获得超1个赞

int sum = 0;

for (int j = 1; j < 100; j++) {

if(j%3!=0){

sum = sum + j;

}

}

System.out.println("sum = "+ sum);


查看完整回答
反对 回复 2016-02-19
  • 6 回答
  • 0 关注
  • 3588 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信