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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. while (steps != 0 ) {
  2.   ...
  3.   steps--;  // steps原本等于5的
  4. }
复制代码

7 个回复

正序浏览
导航 中级黑马 2015-6-30 08:39:51
8#
steps=o是不是不太对啊
回复 使用道具 举报
我也感觉没有问题啊,写的时候正常通过了啊
回复 使用道具 举报
你再检查一下吧,是不是有些细节没注意到,我按你说的编写运行了一下,没有问题呀
回复 使用道具 举报
如初见 发表于 2015-6-29 21:41
首先你这个while循环的判断条件是steps !=0;  也就是说 括号内只要 不等于0就为true 。然后你说steps 原 ...

说错了, 是等于0的时候才不循环。  
回复 使用道具 举报
首先你这个while循环的判断条件是steps !=0;  也就是说 括号内只要 不等于0就为true 。然后你说steps 原来等于5.也就是说 每次循环都在--  ,除了等于5的时候为flase 不循环,其他都在一直循环。然后 steps 直接就到负数了,以后在也不可能到5.然后循环就一直执行下去了,然后内存溢出。
回复 使用道具 举报
循环体在steps==0时候还继续,编译没错,测试过把条件变成steps > 0,能够正常运行,首先看看steps表示的是什么,如果是数组下标的话就可以从0开始,如果是相关计数的话,然后在运行循环体就没有意义,新人见解……共同进步!
回复 使用道具 举报
Exception in thread "main" java.lang.StackOverflowError
        at com.itheima.SpiralNumber.turn(Test9.java:54)
        at com.itheima.SpiralNumber.setArray(Test9.java:115)
更多的就不贴了, 循环体中有调用另一个方法,而那个方法也调用包含循环体这个方法。所以形成了递归,造成了上面贴的这个错误,但是我认为错的地方是,为什么这个循环体在steps==0时候还继续,测试过把条件变成steps > 0,能够正常运行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马