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

来源:4-9 Java循环语句之 for

会进化的小菜鸟

2015-12-09 15:51

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回答

  • Jason333
    2015-12-09 15:57:57
    已采纳

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

    lovemy... 回复会进化的小菜...

    i=3的时候,i整除3不就等于0了嘛,前半句满足后半句不满足

    2015-12-09 16:09:32

    共 2 条回复 >

  • 会进化的小菜鸟
    2015-12-09 16:23:21

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

  • lovemybabyxuan
    2015-12-09 16:02:12

    问题出在这一句  

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

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

    lovemy... 回复会进化的小菜...

    是我的疏忽,前面的回答是错的,没考虑全面,第一位回答的就很对

    2015-12-09 16:08:15

    共 2 条回复 >

  • 不莣初訫
    2015-12-09 15:58:56

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

  • Caballarii
    2015-12-09 15:55:31

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

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165175 学习 · 17581 问题

查看课程

相似问题