为什么java是无限的,而我的代码中的循环和值不是零?
我正在编写一个程序代码,用于反转输入,我编写的代码如下所示:
/*
* Author: Mohammed Khalid Alnahdi
*
* This program is reverse the number.
* for example 123 to 321
*
*/
// call utility to take number from the users.
import java.util.Scanner;
class ReverseNumberInput{
public static void main(String[] args){
//we call the tool of take number.
Scanner take = new Scanner(System.in);
int inputNumberUser, printValue = 0;
System.out.print("Please enter the number : ");
inputNumberUser = take.nextInt();
System.out.print("the reverse number is : ");
while(inputNumberUser != 0){
printValue = inputNumberUser % 10;
inputNumberUser = inputNumberUser- printValue;
System.out.printf("%d",printValue);
}
}
}
这个问题的答案是两个为什么
第一个解决方案是替换
inputNumberUser = inputNumberUser- printValue;
借
inputNumberUser = inputNumberUser/10;
第二个是
while(inputNumberUser != 0){
int digit = inputNumberUser % 10;
printValue = printValue * 10 + digit;
inputNumberUser = inputNumberUser/10;
}
System.out.print(printValue);
我的问题是,为什么我在第一个代码中没有给出inputNumberUser
zero值,同时扣除剩余值,直到put值为零
# 1 楼答案
你需要把减法的结果除掉
在每次迭代后
inputNumberUser = inputNumberUser- printValue;
例如,您有一个输入
154
154 - 4 = 150
是你的下一个inputNumberUser
在下一次迭代中
150 - 0 = 150
是你的下一个inputNumberUser
所以你的输出是
40000...
如果在每次迭代后将
inputNumberUser
除以10
,则15 - 5 = 10
是你的下一个inputNumberUser
然后
1 - 1 = 0
是你的下一个inputNumberUser