首页 > Java > java教程 > 正文

所提供的 Java 代码如何在不使用数组或字符串的情况下反转整数?

Patricia Arquette
发布: 2024-11-04 21:41:02
原创
888 人浏览过

How does the provided Java code reverse an integer without using arrays or strings?

在 Java 中不使用数组反转整数

您的查询涉及在不求助于数组或字符串的情况下反转整数。您在理解以下代码片段背后的基本原理时遇到困难:

while (input != 0) {
    reversedNum = reversedNum * 10 + input % 10;
    input = input / 10;   
}
登录后复制

整数反转原理

要掌握此算法背后的逻辑,请考虑以下概念:

  • 模数 (%): 输入时除以 10,结果是最后一位数字。 (例如,1234 % 10 等于 4。)
  • 乘以 10: 将整数乘以 10“将其向左移动”,在其右侧添加一个零。 (例如,5 * 10 = 50。)
  • 除以 10: 此操作删除最右边的数字。 (例如,75 / 10 = 7。)

伪代码

反转算法遵循以下步骤:

  1. 提取输入的最右边的数字。
  2. 附加提取的数字到reversedNum变量。
  3. 将reversedNum乘以10将其数字向左移动。
  4. 将输入除以10以删除检查的数字。
  5. 重复步骤1- 4 直到输入达到零。

正在工作代码

以下是所提供代码的更新版本,可容纳大输入整数并处理可能的溢出:

<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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板