Java循环未输出预期结果,程序无输出求助
问题分析与修复方案
嘿,我一眼就揪出问题啦!你的程序之所以完全没有输出,是因为deleteFives方法里藏着一个死循环,导致程序永远卡在循环里,根本走不到返回结果和输出的步骤。
问题根源
看这段循环代码:
for (int j = start; start < end; j++) { count++; }
循环的终止条件是start < end,但你在循环体里只递增了j,start的值从始至终都是传入的初始值(这里是1),而end是100——1 < 100这个条件会永远成立,程序就会一直循环下去,永远到不了return count这一步,自然也就不会有任何输出了。
修复方案
有两种简单的修复方式,选哪种都可以:
方式一:修正循环条件(推荐)
让循环条件依赖我们正在递增的变量j,这样循环会在j达到end时正常终止:
public static int deleteFives(int start, int end) { int count = 0; for (int j = start; j < end; j++) { count++; } return count; }
方式二:改用start作为循环变量
如果想直接用start来控制循环,那就把递增的对象改成start:
public static int deleteFives(int start, int end) { int count = 0; for (; start < end; start++) { count++; } return count; }
修复之后,调用deleteFives(1, 100)会输出99——因为从1到99一共是99个数字(不包含100)。如果你的需求是要包含end这个数,记得把循环条件改成j <= end或者start <= end哦。
内容的提问来源于stack exchange,提问作者AssumingPidgeon
相关产品推荐
相关产品推荐

