Java 在不使用数组的情况下反转整型值

2022-09-01 01:09:34

任何人都可以向我解释如何在不使用数组或字符串的情况下反转整数。我从网上得到了这个代码,但不是真的理解为什么+输入%10并再次除法。

while (input != 0) {
    reversedNum = reversedNum * 10 + input % 10;
    input = input / 10;   
}

以及如何使用此示例代码仅反转奇数。示例我得到这个输入12345,然后它将反转奇数以输出531。


答案 1

Java 反转 int 值 - 原则

  1. 将输入 int 按 10 进行模组 (%) 将提取出最右边的数字。例如:(1234 % 10) = 4

  2. 将一个整数乘以 10 将“向左推”,在该数字的右侧显示一个零,例如:(5 * 10) = 50

  3. 将整数除以 10 将删除最右边的数字。(75 / 10) = 7

Java 反转 int 值 - 伪代码:

一个。提取输入号码最右边的数字。(1234 % 10) = 4

b.取该数字 (4) 并将其添加到新的反向数字中。

c. 将反向数字乘以 10 (4 * 10) = 40,这会在 (4) 的右侧显示一个零。

d. 将输入除以 10(删除最右边的数字)。(1234 / 10) = 123

e.在步骤a中用123重复

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;
}

在真正的工作世界中,你永远不会做这样的事情。但是,您用来在没有帮助的情况下解决问题的过程是将可以解决问题的人与想要解决问题的人区分开来,但除非他们是由博客上的好人喂食的勺子,否则无法解决问题。


答案 2

我不清楚你的奇数。这段代码的工作方式是(它不是Java特定的算法)例如。输入 =2345 第一次在 while 循环 rev=5 输入=234 第二次 rev=5*10+4=54 输入=23 第三次 rev=54*10+3 输入=2 第四次 rev=543*10+2 输入=0

所以反转的数字是5432。如果你只想要反转数字中的奇数,那么。代码是:

while (input != 0) {    
    last_digit = input % 10;
    if (last_digit % 2 != 0) {     
        reversedNum = reversedNum * 10 + last_digit;

    }
    input = input / 10; 
}