Java数字反转程序出现无限while循环,inputNumberUser无法归零问题咨询
问题原因分析
核心原因
你原始代码的无限循环问题出在 inputNumberUser = inputNumberUser - printValue 这行逻辑的设计错误:
printValue是你通过inputNumberUser % 10取到的数字的个位数余数,减去这个余数只能把当前数字的最后一位变成0,并不会缩减数字的位数。- 举个实际运行的例子说明,假设你输入的数字是123:
- 第一次循环:
inputNumberUser = 123,取余得3,减去3后变为120,不等于0,继续循环,打印3 - 第二次循环:
inputNumberUser = 120,取余得0,减去0后仍然是120,不等于0,继续循环,打印0 - 后续所有循环的取余结果永远是0,
inputNumberUser永远停在120不会变化,永远达不到循环退出条件inputNumberUser != 0的相反状态,自然就进入无限循环,同时会不断打印0刷屏。
- 第一次循环:
两种修复方案的逻辑说明
- 第一种方案把减法替换为
inputNumberUser = inputNumberUser / 10:因为Java中int类型的除法是截断整数除法,相当于直接抹掉数字的最后一位,123/10得12,12/10得1,1/10得0,自然就能正常退出循环。 - 第二种方案的逻辑是先把反转后的数字拼接存储在变量里,最后统一输出,避免了循环中逐位打印的操作,同时也用除以10的逻辑缩减位数,同样可以正常退出循环。
内容的提问来源于stack exchange,提问作者Senior-Moe
相关产品推荐
相关产品推荐

