问答详情
源自:4-9 Java循环语句之 for

对于下面这个Java程序,关于for循环语句的两个问题。

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

1、i的自增不应该是在求和之后吗?i++放在括号里边,在求和之前数值就发生改变了啊。
2、在if判断条件后面,当i等于3的倍数的时候,i%3!=0就为假了,程序会怎么执行?


提问者:右手很强壮 2016-08-07 18:21

个回答

  • 好学的渣渣
    2016-08-07 18:47:05
    已采纳

    首先第一个问题是,for循环里面的i++是先引用再增加的,你调试代码就可以发现,for循环第一个i的值是你最开始赋值的;后面才会在每次循环开始的时候增加。

    第二个问题是,当i等于3的倍数的时候,条件为假了,就不会进入if后面的语句,程序当然会继续往下执行下去,直到走完这次循环。

  • qq_Winterwheat_0
    2016-08-07 22:15:36

    你也是厉害。都不想说了。

  • 腐巧i
    2016-08-07 19:03:38

    首先 你的i++自增应该放在for循环里边 你会明白为什么的 如果你这样写。

    第二 当if(i%3!=0)为假时,条件语句不执行,直接跳过{},执行后边的语句。

  • 慕标9177895
    2016-08-07 18:48:11

    1、第二个i++去掉

    2、然后条件家的时候是不执行里面内容

    3、这都是基础啊