为什么在我的代码中循环而值不为零时会出现无穷大

  • 本文关键字:零时 无穷大 循环 代码 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值,直到值为零。

您需要对减法的结果进行除法

inputNumberUser = inputNumberUser- printValue;在每次迭代后通过10

例如,您有一个输入154

154 - 4 = 150是您的下一个inputNumberUser

在下一次迭代中,您将获得

150 - 0 = 150是您的下一个inputNumberUser

所以你的输出将是40000...

如果你在每次迭代后用inputNumberUser除以10,你就会得到

15 - 5 = 10是您的下一个inputNumberUser

然后,

1 - 1 = 0是您的下一个inputNumberUser

最新更新