在 Java 中不使用数组反转整数
您的查询涉及在不求助于数组或字符串的情况下反转整数。您在理解以下代码片段背后的基本原理时遇到困难:
while (input != 0) { reversedNum = reversedNum * 10 + input % 10; input = input / 10; }
整数反转原理
要掌握此算法背后的逻辑,请考虑以下概念:
伪代码
反转算法遵循以下步骤:
正在工作代码
以下是所提供代码的更新版本,可容纳大输入整数并处理可能的溢出:
<code class="java">public int reverseInt(int input) { long reversedNum = 0; long input_long = input; while (input_long != 0) { reversedNum = reversedNum * 10 + input_long % 10; input_long = input_long / 10; } if (reversedNum > Integer.MAX_VALUE || reversedNum < Integer.MIN_VALUE) { throw new IllegalArgumentException(); } return (int) reversedNum; }
仅反转奇数
要仅反转整数中的奇数位,您可以实现相同的算法,但添加条件语句以跳过偶数位数字。例如:
public int reverseOddDigits(int input) { long reversedNum = 0; long input_long = input; while (input_long != 0) { if (input_long % 2 == 1) { reversedNum = reversedNum * 10 + input_long % 10; } input_long = input_long / 10; } if (reversedNum > Integer.MAX_VALUE || reversedNum < Integer.MIN_VALUE) { throw new IllegalArgumentException(); } return (int) reversedNum; }</code>
使用此修改后的代码,您现在可以有选择地反转输入整数中的奇数位。
以上是所提供的 Java 代码如何在不使用数组或字符串的情况下反转整数?的详细内容。更多信息请关注PHP中文网其他相关文章!