use*_*501 34 java reverse integer
任何人都可以向我解释如何在不使用数组或字符串的情况下反转整数.我从网上得到了这个代码,但不是很明白为什么+输入%10并再次划分.
while (input != 0) {
reversedNum = reversedNum * 10 + input % 10;
input = input / 10;
}
Run Code Online (Sandbox Code Playgroud)
以及如何使用此示例代码仅反转奇数.示例我得到了此输入12345,然后它将奇数反转为输出531.
Eri*_*ski 90
Java反转int值 - 原则
将输入int修改(%)10将从最右边的数字中提取.例如:(1234%10)= 4
将整数乘以10将"向左推",在该数字的右侧显示零,例如:(5*10)= 50
将整数除以10将删除最右边的数字.(75/10)= 7
Java反转一个int值 - 伪代码:
一个.提取输入数字的最右边数字.(1234%10)= 4
湾 取该数字(4)并将其添加到新的reversedNum中.
C.将reversedNum乘以10(4*10)= 40,这会在您的(4)右侧显示零.
d.将输入除以10,(删除最右边的数字).(1234/10)= 123
即 用步骤123重复步骤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;
}
Run Code Online (Sandbox Code Playgroud)
在真实的工作环境中,你永远不会做这样的事情.然而,你在没有帮助的情况下使用它来解决问题的过程将能够解决问题的人与那些想要解决问题的人区分开来,但除非他们被博客上的好人用勺子喂食,否则就不能分开.
she*_*eki 31
我不清楚你的奇数.此代码的工作方式是(它不是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;
}
Run Code Online (Sandbox Code Playgroud)
Gan*_*mar 12
只需你可以使用它
public int getReverseInt(int value) {
int resultNumber = 0;
for (int i = value; i !=0; i /= 10) {
resultNumber = resultNumber * 10 + i % 10;
}
return resultNumber;
}
Run Code Online (Sandbox Code Playgroud)
您可以将此方法与您想要反转的给定值一起使用.
while (num != 0) {
rev = rev * 10 + num % 10;
num /= 10;
}
Run Code Online (Sandbox Code Playgroud)
这是我用于此问题的解决方案,它工作正常.更多细节:
num % 10
Run Code Online (Sandbox Code Playgroud)
此声明将为您提供原始号码的最后一位数字.
num /= 10
Run Code Online (Sandbox Code Playgroud)
该语句将消除原始数字的最后一位数,因此我们确定while循环将终止.
rev = rev * 10 + num % 10
Run Code Online (Sandbox Code Playgroud)
这里rev*10将左移值,然后添加原始的最后一位数.
如果原始数字是1258,并且在运行时间中间我们有rev = 85,num = 12所以:
num%10 = 2
rev*10 = 850
rev*10 + num%10 = 852
| 归档时间: |
|
| 查看次数: |
153786 次 |
| 最近记录: |