一尘不染

Java不使用数组即可反转int值

java

谁能向我解释如何在不使用数组或字符串的情况下反转整数。我从网上获得了此代码,但并没有真正理解为什么+输入%10并再次除法。

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

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


阅读 443

收藏
2020-03-12

共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; 
}
2020-03-12
一尘不染

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)并将其添加到新的reverseNum中。

C。将reversedNum乘以10(4 * 10)= 40,这将在你的(4)的右边显示一个零。

d。输入除以10,(除去最右边的数字)。(1234/10)= 123

e。在步骤a中重复123

Java反转一个int值-工作代码

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

在实际的工作环境中,你将永远不会做这样的事情。但是,在没有帮助的情况下用来解决问题的过程就是将能够解决问题的人与想要解决问题的人区分开来,但是除非他们被Blogoblags上的好心人喂饱,否则他们是无法做到的。

2020-03-12