Печать от 0001 до 1000 в Котлине. Как добавить отступы к номерам? - PullRequest
0 голосов
/ 29 июня 2018

Я хочу напечатать 0001 (обратите внимание на 3 предшествующих 0), и постепенно увеличивать 1 за раз, и достичь 1000, чтобы остановиться. Как я могу сделать это в Kotlin без сложного добавления нулей самостоятельно?

Нижеследующее не помогает, так как не будет иметь предшествующих 0.

for (i in 1..1000) print(i)

Ответы [ 6 ]

0 голосов
/ 18 июля 2018

Использование шаблона строки вызовет toString() под капотом и сделает вызов еще короче:

(0..1000).forEach { println("$it".padStart(4, '0')) }

Картографирование сначала - ненужное усилие.

0 голосов
/ 29 июня 2018

С PadStart и без карты или нескольких циклов,

(0..1000).forEach { println(it.toString().padStart(4, '0')) }
0 голосов
/ 29 июня 2018

Просто чтобы прояснить, for - циклы тоже подойдут:

for(i in 1..1000)
    println("%04d".format(i))
0 голосов
/ 29 июня 2018

Вы можете использовать padStart:

(0..1000)
    .map { it.toString().padStart(4, '0') }
    .forEach(::println)

Она является частью стандартной библиотеки Kotlin и доступна для всех платформ.

0 голосов
/ 29 июня 2018

В Kotlin вы можете использовать String.format() (так же, как в Java):

"%04d".format(i)

В вашем случае вы можете записать его следующим образом:

(1..1000).forEach { println("%04d".format(it)) }
0 голосов
/ 29 июня 2018

Если вы удовлетворены подходом, специфичным для JVM, вы можете делать то, что вы делаете в Java:

(1..1000).forEach { println("%04d".format(it)) }

String.format - это функция расширения, определенная в StringsJVM, и она делегируется прямо в базовый String.format, поэтому ее нет в универсальной стандартной библиотеке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...