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

这段代码逻辑上哪里不对?

public static void main(String[] args) {
            int sum = 0; // 保存不能被3整除的数之和
            
            // 循环变量 i 初始值为 1 ,每执行一次对变量加 1,只要小于等于 100 就重复执行循环
            for (int i = 1; i <= 100 && i % 3 != 0  ;i++ ) {
                
                // 变量 i 与 3 进行求模(取余),如果不等于 0 ,则表示不能被 3 整除
                //if (i % 3 != 0) {
                    sum = sum + i; // 累加求和
                //}
            }
            
            System.out.println("1到100之间不能被3整除的数之和为:" + sum);
        }

正在回答

5 回答

当 i = 3 的时候,不满足  i <= 100 && i % 3 != 0 的条件,for循环结束 ,只计算了 1 和 2 ,结果为 3

2 回复 有任何疑惑可以回复我~
#1

会进化的小菜鸟 提问者

i=3不是满足i<=100并且同时满足i%3 != 0么?大神,烦请说详细点哈,谢谢~~
2015-12-09 回复 有任何疑惑可以回复我~
#2

lovemybabyxuan 回复 会进化的小菜鸟 提问者

i=3的时候,i整除3不就等于0了嘛,前半句满足后半句不满足
2015-12-09 回复 有任何疑惑可以回复我~

我想明白了,谢谢大家,这根本就是两个不同目的循环条件,一个是用来判断i<=100;另一个是用来求能被3整除的数字,当i=3时,3/3=1余数为0,不满足0!=0这个表达式,所以在i=3时就已经终止了for循环!

0 回复 有任何疑惑可以回复我~

问题出在这一句  

i <= 100 && i % 3 != 0

前半句是布尔型,后半句是int型,类型不对,应该把后半句再写一个if循环判断

0 回复 有任何疑惑可以回复我~
#1

会进化的小菜鸟 提问者

那为什么在if语句里面又可以用:i % 3 != 0作为判断条件?
2015-12-09 回复 有任何疑惑可以回复我~
#2

lovemybabyxuan 回复 会进化的小菜鸟 提问者

是我的疏忽,前面的回答是错的,没考虑全面,第一位回答的就很对
2015-12-09 回复 有任何疑惑可以回复我~

for (int i = 1; i <= 100 ;i++ )

1 回复 有任何疑惑可以回复我~

for循环括号第二段把i%3!=0删掉,这部分是进入循环的条件,一旦是false就结束循环执行了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

这段代码逻辑上哪里不对?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信