#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