continue用法问题

teayear
前端领域优质创作者
博客专家认证
2018-07-04 12:15:38
int i=0,sum=0;
while(i<101){
i++;
//if(i==50)break;//break:直接跳出整个循环;
if(i%2==0)
continue; //当i是偶数的,跳过本次求和运算;
sum+=i; //算奇数;


}

System.out.println(sum);
为什么结果是2601,而使用for循环是2500
for(int i=1;i<=100;i++){
if(i%2==0)continue;
sum+=i;
}
...全文
708 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_38323765 2018-07-31
  • 打赏
  • 举报
回复
因为你在while进去的时候加i++了,也就是说你实际上计算的是所有的偶数+1后的和,如果你把i++放到循环最后面,那结果就都一致了
自由自在_Yu 2018-07-16
  • 打赏
  • 举报
回复
int i = 0, sum = 0;
while (i < 101) {
if (i % 2 == 0) {
i++;
continue; // 当i是偶数的,跳过本次求和运算;
} else {
sum += i; // 算奇数;
i++;
}
}
System.out.println(sum);
luffysk 2018-07-16
  • 打赏
  • 举报
回复
当i=100时进入while循环,然后i+1变成101加入总和中了,解决办法是将i++移到末尾执行。
末流码农 2018-07-16
  • 打赏
  • 举报
回复
两个数相差101 就能看出问题所在了吧
weixin_42466285 2018-07-16
  • 打赏
  • 举报
回复
while(i<100)就可以啦
遇见1995 2018-07-08
  • 打赏
  • 举报
回复
i++,哪里出问题了,楼上解释正常.
天行归来 2018-07-04
  • 打赏
  • 举报
回复
while循环和for循环的循环体执行次数不一样。
while 101次;for 100次
  • 打赏
  • 举报
回复
引用 楼主 zhangchen124 的回复:
int i=0,sum=0;
while(i<101){
i++;
//if(i==50)break;//break:直接跳出整个循环;
if(i%2==0)
continue; //当i是偶数的,跳过本次求和运算;
sum+=i; //算奇数;


}

System.out.println(sum);
为什么结果是2601,而使用for循环是2500
for(int i=1;i<=100;i++){
if(i%2==0)continue;
sum+=i;
}

问题出在你的那个i++上,当100的时候还能进去,然后自加,变成101,再做你的逻辑处理,,,,所以结果不一样的,for循环只计算到100
verejava 2018-07-04
  • 打赏
  • 举报
回复
Java 基础 之 continue和 break

http://www.verejava.com/?id=17159306674727
全栈极简 2018-07-04
  • 打赏
  • 举报
回复
while(i<101)
改为
while(i<100)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧