原文: https://www.programiz.com/java-programming/examples/reverse-number
public class ReverseNumber {
public static void main(String[] args) {
int num = 1234, reversed = 0;
while(num != 0) {
int digit = num % 10;
reversed = reversed * 10 + digit;
num /= 10;
}
System.out.println("Reversed Number: " + reversed);
}
}
运行该程序时,输出为:
Reversed Number: 4321
在此程序中,while
循环用于按以下步骤反转数字:
- 首先,将
number
除以 10 的余数存储在变量digit
中。 现在,digit
包含number
的最后一位,即 4。 然后将reversed
乘以 10 后加上digit
。 乘 10 在倒序数字中添加一个新位置。 个位乘以 10 可得到十位,十位则可得到百位,依此类推。 在这种情况下,将reversed
包含0 * 10 + 4 = 4
。然后num
除以 10,因此现在它仅包含前三个数字:123。 - 在第二次迭代后,
digit
等于 3,reversed
等于4 * 10 + 3 = 43
,并且number = 12
- 在第三次迭代后,
digit
等于 2,reversed
等于43 * 10 + 2 = 432
,并且number = 1
- 在第四次迭代后,
digit
等于 1,reversed
等于432 * 10 +1 = 4321
,并且number = 0
- 现在
num = 0
,因此测试表达式num != 0
失败并且while
循环退出。reversed
已经包含颠倒的数字 4321。
public class ReverseNumber {
public static void main(String[] args) {
int num = 1234567, reversed = 0;
for(;num != 0; num /= 10) {
int digit = num % 10;
reversed = reversed * 10 + digit;
}
System.out.println("Reversed Number: " + reversed);
}
}
运行该程序时,输出为:
Reversed Number: 7654321
在上面的程序中,while
循环被 for 循环替换,其中:
- 不使用初始化表达式
- 测试表达式保持不变(
num != 0
) - 更新/递增表达式包含
num /= 10
。
因此,每次迭代之后,更新表达式都会运行,该表达式将删除num
的最后一位。
当for
循环退出时,reversed
将包含颠倒的数字。