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

这样写哪里出错了

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

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


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

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的时候,循环终止

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


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

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

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

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

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

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

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);

}


}


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

应该改成for循环语句

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

慕数据6417455 提问者

改成for也不行 就直接没结果 没错误提示
2017-06-19 回复 有任何疑惑可以回复我~

把if改成for试试呢

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

慕数据6417455 提问者

额。。这个我自己写的没注意 改成for也不行 就直接没结果 没错误提示
2017-06-19 回复 有任何疑惑可以回复我~
#2

奔跑的兔斯基 回复 慕数据6417455 提问者

换问题了?你这第一个程序走下来是这样的,首先i=1,带进来符合循环的条件,所以这个时候sum=1+0;输出的第一个结果就是1;然后i++,这个时候i=2带进来,符合循环条件,sum=i+sum=2+1=3,输出的第二个结果就是3;接下来就是i=3,不符合循环条件,因为条件中有i%3!=0,而3%3=0,所以跳出循环,over
2017-06-22 回复 有任何疑惑可以回复我~
#3

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

正解!!!
2017-07-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1165458    人
  • 解答问题       17585    个

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

进入课程

这样写哪里出错了

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