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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

java菜鸟初次发帖,望论坛大神帮忙解惑,谢谢~~
class NumForHe //利用for循环语句计算1到100之和。
{
public static void main(String[] args)
{
  for(int he=0,x=1;x<=101;he=he+x,x++) //he总和变量,x自增变量。
  {
   System.out.println("he="+he);
  }
}
}

疑问:for循环语句中,为何是x<=101,而不是x<=100?
如果是x<=100的话,最终结果4950,而不是正确的结果5050,刚好差了最后那100。
运行结果如截图:

...

18 个回复

倒序浏览
本帖最后由 fantacyleo 于 2014-7-23 11:52 编辑

x<=100没有问题,你出了for循环再打印he,就是5050了。你在for循环内部,当he加上100后,x自增变成101,判断x<=100为假,不再执行循环体,所以he=5050就打印不出来了。
回复 使用道具 举报
一般把和的计算放在循环体中,你这么做,当x<=100时,100加进去了,但是没打印,因为he = he +100后,x+1=101,再判断循环条件不满足,就出去了,没打印加上100的和。
而101的情况就是没打印101的,你应该在循环之外加一个打印,应该就知道了。
回复 使用道具 举报
放错位置了。
  1. for (int he = 0, x = 1; x <= 100; x++) {
  2.         he = he + x;// 放这里
  3.         System.out.println(x + ",he=" + he);
  4. }
复制代码



回复 使用道具 举报
你干嘛要把代码这样写呢,你要展示你的技术高强,还是。。。要是面试你这样写肯定被刷下。
回复 使用道具 举报

噢,明白了。谢谢
回复 使用道具 举报
star5603 发表于 2014-7-23 11:53
一般把和的计算放在循环体中,你这么做,当x

谢谢,看懂了
回复 使用道具 举报

我去试试,谢谢了
回复 使用道具 举报
GoodBoy123 发表于 2014-7-23 11:54
你干嘛要把代码这样写呢,你要展示你的技术高强,还是。。。要是面试你这样写肯定被刷下。 ...

⊙﹏⊙b汗~~
我是边看毕向东老师的java基础入门视频,边学习写代码。
目前才刚看到for循环,就打算自己写个,然后运行了还出错了。
并不是刻意这样写代码的,学到现在也没学多少东西,没写过几条代码呢,也没有意识到这样写代码不好。
谢谢指出,以后我会多看别人代码,多练习的。
回复 使用道具 举报
这个就是for循环的具体的执行顺序了
for(表达式1; 表达式2 ; 表达式3)
{
    执行语句;
}
第一步:表达式1
第二步:表达式2,为假跳出循环,为真则继续
第三步:执行语句
第四步:表达式3
第二步
回复 使用道具 举报
寻得美好 发表于 2014-7-23 12:09
这个就是for循环的具体的执行顺序了
for(表达式1; 表达式2 ; 表达式3)
{

恩恩,非常感谢~~:)
回复 使用道具 举报
第一个循环结束了之后才执行的he=he+x,x++。
回复 使用道具 举报
首先要明确的是,你操作的是谁,是用哪个变量求和,然后就是用这个变量求和,需要循环多少次,还有那个变量在控制循环次数,这样就可以很明确了
也就不会出错了。
看你的例子,是用he求1~100和,而he是从0开始的,那么就需要循环101次。那么x就要控制可以循环101次,所以x<=101;
为了方便理解,可以定义一个计数器,来计算一共循环了多少次。
还有如果for循环,太臃肿的话,可以把能放在外边的,就方便外边,当然这是方便理解。
class NumForHe //利用for循环语句计算1到100之和。
{
public static void main(String[] args)
{
int count =1;
int he=0;
   for(int x=1;x<=101;x++) //he总和变量,x自增变量。
   {
    System.out.println(count+++"he="+he);
System.out.println(he=he+x);
System.out.println(x);
   }
}
}
回复 使用道具 举报
位置放错了
回复 使用道具 举报
楼主的100和101都是用的 <= 结果当然不一样了
回复 使用道具 举报
简单的说,新手不会采用你使用的代码风格。。。
回复 使用道具 举报
这代码写的很有挑战性。
回复 使用道具 举报
伊甸拾忆 来自手机 中级黑马 2014-7-23 17:25:50
18#
楼主不要写这种浓缩豆腐块代码。
回复 使用道具 举报
因为你he放在循环体里面了,把he拿出来,你直接再打印就行,很简单的,楼主写代码注意规范就好.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马