这样写哪里出错了

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

慕数据6417455

2017-06-19 16:44

public class HelloWorld {

    public static void main(String[] args) {

int sum=0;

for (int i=1;i<=100 && i%3!=0;i++){

   sum=i+sum;

   System.out.println("100以不能被3整除的数之和:"+sum);

}

}

}


现在结果是这个

00以不能被3整除的数之和:1
100以不能被3整除的数之和:3

   public static void main(String[] args) {

int sum =0;

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

if (i%3!=0){

sum=i+sum;

System.out.println("100以不能被3整除的数之和:"+sum);

}

}

   }

}

这两个结果为啥不一样

写回答 关注

7回答

  • 八戒_你瘦了
    2017-06-20 13:37:50

    因为你第一个写法i<=100 && i%3!=0,在i累加到=3时,判断FALSE 循环已经跳出了 sum自然=3


  • 慕圣0830664
    2017-06-19 23:32:13

    int sum = 0;
      for (int i = 0; i <= 100 && i%3 != 0; i++) {
       sum +=i;
       System.out.println("100内以不能被3整除的整数之和:" + sum);
      }

    for循环的执行顺序:
       1、先执行:int = 0;
       2、执行条件表达式:i<=100 && i%3 != 0;
       3、如果第2步成立,执行sum += i;
        如果不成立,直接跳出循环,循环结束
       4、执行完第3步,接着执行i++;
       5、再执行 i<=100 && i%3 != 0;
       6、如果第5步成立,执行sum += i;
        如果不成立,直接跳出循环,循环结束
       7、执行i++,依次类推。。。

        在上述循环中,循环执行到第2步的时候就跳出循环了,因为此时i = 0, 0%3=0,0对任意数取余结果都是0,条件表达式 0<=100 && i%3!=0 结果为false,直接跳出循环。


    int sum = 0;
      for (int i = 1; i <= 100; i++) {
       if (i%3 != 0) {
        sum += i;
        System.out.println("100内以不能被3整除的整数之和:" + sum);
       }
      }
      
      /* 
     此循环的执行顺序:
      
      i的值    循环条件表达式   if条件表达式   sum的值    
      i = 1;      i <= 100;         i%3 != 0;             sum+=i;           i++
      1 ;        0<=100 成立,     1%3=1 成立,    sum=0+1=1     i++;
      2 ;        2<=100 成立,     2%3=2 成立,       sum=1+2=3     i++;
      3 ;        3<=100 成立,  3%3=0 不成立     跳过此步            i++;
      4 ;        4<=100 成立      4%3=1 成立       sum=3+4=7      i++;
      ...依次类推,直到i<=100不成立的时候才跳出循环,也就是说当i=101的时候,循环终止

    能写的都给你写上了,只能帮到这了... 
      */


  • wdengke
    2017-06-19 21:21:53

    跳出for循环的条件不一致。

     i<=100 && i%3!=0和i<=100能一样吗?

  • 小木木_
    2017-06-19 18:25:16

    http://img.mukewang.com/5947a6710001e38f06280355.jpg写的不好 下班了 着急 将就看吧

  • 慕婉清0689395
    2017-06-19 17:43:35

    public class HelloWorld {


    public static void main(String[] args) {

    int sum=0;

    for (int i=1;i<=100 && i/3!=0;i++){//你将i/3不等于0放在里面他直接就跳出循环了啊(1/3=1啊),所以没有输出

      sum=i+sum;

      System.out.println("100以不能被3整除的数之和:"+sum);

    }

    //下面是根据你的意思完成的功能

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

    if (i % 3 == 0) {

    continue;

    }

      sum=i+sum;

      

    }

    System.out.println("100以不能被3整除的数之和:"+sum);

    }


    }


  • Mr_树先生
    2017-06-19 17:20:40

    应该改成for循环语句

    慕数据641...

    改成for也不行 就直接没结果 没错误提示

    2017-06-19 17:31:57

    共 1 条回复 >

  • 奔跑的兔斯基
    2017-06-19 17:17:48

    把if改成for试试呢

    乱七八糟的代... 回复奔跑的兔斯基

    正解!!!

    2017-07-09 20:42:46

    共 3 条回复 >

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

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

1162889 学习 · 17550 问题

查看课程

相似问题