A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 天邃任我桓 中级黑马   /  2014-8-11 00:58  /  1674 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 天邃任我桓 于 2014-8-14 16:19 编辑


大家看看我的代码,i不是已经限定小于等于10,它为什么还会运行到11,而且得出的结果又这么莫名其妙,求解释!谢谢各位!PS新人发帖,有什么不对的请帮忙指出,谢谢!

13 个回复

倒序浏览
你的i++;放的位置太靠前了 应该放在sum=sum+i;的后边.你这样i的10的时候while循环是true,然后直接i++;i就等于11了。同理你第一个i值先i++;进入if中的值是2,所以最后输出的结果是2到10的和
回复 使用道具 举报 1 0
第一次i=1,进入循环后i++,i变为2,sum=sum+2,。。。
最后一次i=10时,进入循环后i++,变成11,打印输出“cuowu”
所以结果应该是sum=54,i为11

你要求和代码改为:
int sum=0,i=1
while(i<=10){
sum+=i;
i++
}
System.out.println("sum="+sum+"i="i);//i跳出循环,值为11
回复 使用道具 举报
根据流程看的话第一次的i就已经为2了,把i++的位置放到sum之后就行。i当然会运行到11,但是不会进入到while循环中,所以你写的if语句是个废语句,根本执行不到。
回复 使用道具 举报
将i++放置于while循环的后,应该就没有这样的问题了,按照你放的位置,当i==10的时候,while循环是成立的,会继续向下执行,这个时候执行到i++,最后导致i是等于11的!
回复 使用道具 举报
sum+=i;
i++
不然开始循环的话i就等于2了,i++位置太靠前了
回复 使用道具 举报
瀚玉 初级黑马 2014-8-11 13:27:02
7#
把i++放在sum=sum+i的下面,把if()语句放在i++的下面
回复 使用道具 举报
好的,解决了,谢谢各位啊:handshake
回复 使用道具 举报
冒牌高手 发表于 2014-8-11 08:26
根据流程看的话第一次的i就已经为2了,把i++的位置放到sum之后就行。i当然会运行到11,但是不会进入到while ...

我其实就是想看看,他到底执行到哪里了,所以才这么写的,谢谢啊!:handshake
回复 使用道具 举报
因为 i 的自增位置太靠前,所以还没来得及进行判断就直接将 i 加1了,而在 i 的值为10继续循环的时候仍然会先加1再判断。而 i 实际的累加值是2~10,最后输出为11.
回复 使用道具 举报
i++靠前了。
回复 使用道具 举报
eclipse就是好呀
回复 使用道具 举报
又学习到知识了.
回复 使用道具 举报
weity 中级黑马 2014-8-12 06:52:41
14#
求结帖,只有楼主结贴了,俺的回答才能有技术分加。。。赶着42期,帮帮忙咯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马