How to Reverse a Number in Java

17 Mar 2025 | 6 分钟阅读

在本节中,我们将学习如何在 Java 中反转数字,使用 while 循环for 循环递归

要反转一个数字,请按照以下步骤操作

  • 首先,我们使用模 (%) 运算符求出给定数字的余数。
  • 将变量 reverse 乘以 10,然后将余数加到其中。
  • 将该数字除以 10。

重复以上步骤,直到该数字变为 0。

How to Reverse a Number in Java

Java 中有三种方法可以反转一个数字

  • 使用 while 循环反转数字
  • 使用 for 循环反转数字
  • 使用递归反转数字

让我们在一个例子中应用以上步骤。

示例

假设,我们想反转数字 1234。

在这个例子中,我们使用了三个变量,分别是 number (要反转的数字)、remainder (存储余数)、reverse (存储反转后的数字),并初始化为 0。

第一次迭代

number = 1234
remainder = 1234 % 10 = 4
reverse = 0 * 10 + 4 = 0 + 4 = 4
number = 1234 / 10 = 123

现在 number 和 reverse 变量的值分别是 123 和 4。

第二次迭代

number = 123
remainder = 123 % 10 = 3
reverse = 4 * 10 + 3 = 40 + 3 = 43
number = 123 / 10 = 12

现在 number 和 reverse 变量的值分别是 12 和 43。

第三次迭代

number = 12
remainder = 12 % 10 = 2
reverse = 43 * 10 + 2 = 430 + 2 = 432
number = 12 / 10 = 1

现在 number 和 reverse 变量的值分别是 1 和 432。

第 4 次迭代

number = 1
remainder = 1 % 10 = 1
reverse = 432 * 10 + 1 = 4320 + 1 = 4321
number = 1 / 10 = 0

现在变量 number 变为 0。因此,我们得到了反转后的数字 4321

让我们通过一个Java 程序来实现上述逻辑。

使用 while 循环反转数字

ReverseNumberExample1.java

输出

The reverse of the given number is: 456789

使用 for 循环反转数字

在下面的程序中,我们用 for 循环替换了 while 循环。它也在每次迭代后移除数字的最后一位。当条件 number!=0 变为 false 时,循环退出,我们就得到了反转后的数字。

ReverseNumberExample2.java

输出

The reverse of the given number is: 654321

在上面的程序中,我们也可以将 for 循环写成如下形式

使用递归反转数字

ReverseNumberExample3.java

输出 1

Enter the number that you want to reverse: 9
The reverse of the given number is: 9

输出 2

Enter the number that you want to reverse: 7654123
The reverse of the given number is: 3214567

下面的程序可以反转正数和负数。当我们输入一个数字时,它首先检查该数字是正数还是负数。如果数字是负数,它通过乘以 -1 将其转换为正数。之后,它执行相同的步骤(和我们在上面的程序中执行的一样)来反转数字。最后,它再次检查数字是负数还是正数。为了使数字变为负数,它再次将反转后的数字乘以 -1。

ReverseNumberExample4.java

输出 1

Enter the number that you want to reverse: -98765
The reverse of the given number is: -56789

输出 2

Enter the number that you want to reverse: 321987
The reverse of the given number is: 789123

在 Java 中反转数字的选择题

1. 以下哪种方法可用于在 Java 中反转数字?

  1. java.lang.StringBuilder 类中的 reverse() 方法
  2. 使用位运算符
  3. 递归方法
  4. 以上全部。

答案:d)

解释:虽然提供的示例演示了三种常见的方法,但在 Java 中还有其他多种方法可以反转数字,包括使用像 StringBuilder 这样的库和位运算符。


2. 使用递归方法反转数字有什么优势?

  1. 递归方法比迭代方法快
  2. 递归方法需要更少的内存
  3. 递归方法简化了代码
  4. 递归方法可以更容易地处理负数

答案:c)

解释:虽然在内存使用或执行速度方面,递归方法可能不总是最高效的,但与迭代解决方案相比,它们通常能写出更简洁、更易读的代码。


3. 在 Java 中,哪种数据类型最适合存储反转后的数字?

  1. int
  2. long
  3. String
  4. double

答案:a)

解释:由于反转一个数字的输出是另一个整数,对于大多数情况,将其存储在 int 变量中就足够了。使用 long 将适用于处理更大的数字。


4. 在反转数字算法中检查负数有何意义?

  1. 它可以防止在输入为负数时出现无限递归
  2. 它确保了对负数输出的正确处理
  3. 它提高了算法的效率
  4. 它允许区分正数和负数输出

答案:b)

解释:单独处理负数确保了算法能产生正确的输出,在反转后保持原始数字的符号。


5. 哪种循环结构通常用于迭代式地反转数字?

  1. for 循环
  2. while 循环
  3. do-while 循环
  4. 增强 for 循环

答案:b)

解释:虽然所有循环结构都可以用来反转数字,但由于其简单性和对这类重复性任务的适用性,while 循环是常用的。


下一个主题Java 教程