黑马程序员技术交流社区
标题:
自减符,谁给我解释一下这个循环为什么停不了?
[打印本页]
作者:
Diors
时间:
2015-6-29 20:43
标题:
自减符,谁给我解释一下这个循环为什么停不了?
while (steps != 0 ) {
...
steps--; // steps原本等于5的
}
复制代码
作者:
Diors
时间:
2015-6-29 20:48
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,能够正常运行
作者:
燃烧的灵魂
时间:
2015-6-29 21:34
循环体在steps==0时候还继续,编译没错,测试过把条件变成steps > 0,能够正常运行,首先看看steps表示的是什么,如果是数组下标的话就可以从0开始,如果是相关计数的话,然后在运行循环体就没有意义,新人见解……共同进步!
作者:
如初见
时间:
2015-6-29 21:41
首先你这个while循环的判断条件是steps !=0; 也就是说 括号内只要 不等于0就为true 。然后你说steps 原来等于5.也就是说 每次循环都在-- ,除了等于5的时候为flase 不循环,其他都在一直循环。然后 steps 直接就到负数了,以后在也不可能到5.然后循环就一直执行下去了,然后内存溢出。
作者:
如初见
时间:
2015-6-29 21:43
如初见 发表于 2015-6-29 21:41
首先你这个while循环的判断条件是steps !=0; 也就是说 括号内只要 不等于0就为true 。然后你说steps 原 ...
说错了, 是等于0的时候才不循环。
作者:
zlpiano
时间:
2015-6-29 21:46
你再检查一下吧,是不是有些细节没注意到,我按你说的编写运行了一下,没有问题呀
作者:
qxc1281
时间:
2015-6-30 08:13
我也感觉没有问题啊,写的时候正常通过了啊
作者:
导航
时间:
2015-6-30 08:39
steps=o是不是不太对啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2