Модуль для отображения входного числа по вертикали

В основном мне нужно написать программу на java, которая будет запрашивать у пользователя целое число, а затем отображать это число по вертикали (используя только математику), поэтому число 2849 будет отображаться:

2

8

4

9

Я знаю, что могу использовать модуль на 10, получая 9, 4, 8, 2, но чего я не знаю, так это того, как написать код, который будет переносить новое значение после первого модуля, чтобы продолжать работу.

import java.util.Scanner;

public class HorizToVert {
   public static void main(String[] args) {
      Scanner input = new Scanner(System.in);
      System.out.print("Enter a number: ");
      int answer = input.nextInt();
         System.out.print(answer%10);


   }//close main
}//close class

Это то, что у меня есть до сих пор. Как я уже сказал, я знаю, что это даст мне первый остаток. Скажем, пользователь вводит 4936. Я знаю, что первый модуль дает мне 6. Я не знаю, как перейти к 493 после того, как я выполню этот первый модуль, чтобы продолжить процесс. Любая помощь будет здорово!


person Devin    schedule 05.05.2015    source источник
comment
Итак, я понял, что деление - это реальный способ, которым я должен подойти к этому, потому что модуль даст мне обратный ввод. Но я до сих пор не знаю, как добраться до второго интервала.   -  person Devin    schedule 07.05.2015


Ответы (2)


Вам нужно использовать комбинацию модуля и деления. Модуль удалит то, что выше цифры; в то время как деление убирает то, что ниже цифры.

int answer = input.nextInt();

if (answer < 0)
{
    System.out.print("-");
    answer = answer * -1; // make it positive for the loop
}

for (int exponent = 1; answer > 0; exponent = exponent + 1)
{
    int mod = answer % Math.pow(10, exponent); //strip away digits above the desired digit.
    int digit = mod / Math.pow(10, exponent - 1); //strip away digits below the desired digit and bring the desired digit into the [0 - 9] range.
    System.out.print(digit);

    answer = answer - mod; //needed for loop control.
}
person Vargo    schedule 01.09.2020

Как вы правильно заметили, модуль 10 вернет только последнюю цифру.

Поэтому нужно написать цикл, чтобы получить каждую цифру по очереди, разделить не остаток на 10 и повторить. Наконец, переверните список для печати.

В более простом подходе может использоваться преобразование строк, когда вы можете просто печатать цифру за цифрой.

person guidot    schedule 01.09.2020