Java数字反转程序的循环执行逻辑疑问咨询
Java数字反转程序的循环逻辑解析
你的代码
public static void main(String[] args) { int n; System.out.print("Enter a number :"); Scanner sc=new Scanner(System.in); n=sc.nextInt(); int reversednum=0; while(n!=0){ int remainder=n%10; reversednum=reversednum*10+remainder; n=n/10; } System.out.println(reversednum); }
循环逻辑判断
输入n=123时,第2种逻辑完全正确,具体执行流程如下:
- 第一次循环:
- 取余数:
remainder = 123 % 10 = 3 - 更新反转数:
reversednum = 0 * 10 + 3 = 3 - 缩小原数:
n = 123 / 10 = 12(整数除法自动舍去小数部分)
- 取余数:
- 第二次循环:
- 取余数:
remainder = 12 % 10 = 2 - 更新反转数:
reversednum = 3 * 10 + 2 = 32 - 缩小原数:
n = 12 / 10 = 1
- 取余数:
- 第三次循环:
- 取余数:
remainder = 1 % 10 = 1 - 更新反转数:
reversednum = 32 * 10 + 1 = 321 - 缩小原数:
n = 1 / 10 = 0,循环终止
- 取余数:
循环内打印的输出结果
不会输出32321。如果在循环内每次计算完reversednum就用System.out.print(不换行)打印,输入123的实际输出是332321——因为每次循环都会打印当前的反转数:第一次打印3,第二次打印32,第三次打印321,连续输出就会得到这个结果。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

