Как сделать это по порядку - PullRequest
0 голосов
/ 12 апреля 2019
public static void verticalNumber(int n) {
    while (n > 0) {
        n /= 10;
        System.out.printf("%d\n", n % 10);

    }
    System.out.printf("\n");
}

public static void main(String[] args) {
    verticalNumber(1234);
}

Я хочу отобразить число (1234), как это

1

2

3

4

Ответы [ 4 ]

1 голос
/ 12 апреля 2019

Вы идете в правильном направлении.Однако, если вы делаете n/=10 перед печатью, вы уже теряете последнюю цифру (1234 станет 123), и в следующей строке будет напечатано 3.

Если вы инвертируете две строкив то время как вы будете печатать его вертикально.Тем не менее, это будет с ног на голову.Затем вы можете повернуть монитор, чтобы увидеть его в правильном порядке (шучу).

Самый простой способ, который я могу себе представить, - выбросить результат n%10 в список, а затем добавить еще один цикл для его печати.задний ход.

0 голосов
/ 12 апреля 2019

Самый простой способ, imho, это преобразовать его в String, преобразовать String в односимвольный Strings, а затем преобразовать эти отдельные цифры (как Strings) обратно в ints и сохранить их. в Array. Как это:

public static void verticalNumber(int n) {
    int[] nums = Arrays.stream(Integer.toString(n).split(""))
            .mapToInt(s -> Integer.parseInt(s))
            .toArray();
    for (int num: nums) {
        System.out.println(num);
    }
}

Итак:

  • 1234 становится "1234"
  • "1234" становится ["1", "2", "3" "4"]
  • ["1", "2", "3" "4"] становится [1, 2, 3, 4]
0 голосов
/ 12 апреля 2019

n/=10 должен идти после printf.
Поочередно, вы можете сделать:

String.valueOf(n).chars().mapToObj(Character::toString).forEach(System.out::println);

// If you need the extra newlines:
String.valueOf(n).chars().mapToObj(Character::toString).map(c->c+"\n").forEach(System.out::println);
0 голосов
/ 12 апреля 2019

создайте список, и хотя ваш номер не равен 0, добавьте к нему число mod 10, и номер станет номером div 10, и, наконец, у вас будет список, содержащий ваш номер в этом порядке 4,3,2,1, использовать Boocle начиная с размера списка и перейти к 0, чтобы отобразить их содержимое

...