Почему в моем коде возникает бесконечный цикл while, а значение не равно нулю?

#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 нулевого значения, вычитая оставшееся, пока значение не будет равно нулю.

Комментарии:

1. вы уверены, что он станет нулевым после вычета до конца?

2. Сделайте пробную пробежку. Скажем inputNumber , 15, что происходит в цикле while, что выводится на печать в качестве вывода?

Ответ №1:

Вам нужно разделить результат вычитания

inputNumberUser = inputNumberUser- printValue; по 10 после каждой итерации

Например, у вас есть входные данные 154

154 - 4 = 150 ваш следующий inputNumberUser

и на следующей итерации у вас есть

150 - 0 = 150 ваш следующий inputNumberUser

Таким образом, ваш результат будет 40000...

Если вы разделите inputNumberUser на 10 после каждой итерации, у вас будет

15 - 5 = 10 ваш следующий inputNumberUser

затем,

1 - 1 = 0 ваш следующий inputNumberUser