在Kotlin打印0001到1000.如何在数字中添加填充?

Ely*_*lye 14 kotlin

我想打印0001(注意前面的3个0),一次增量1,然后达到1000停止.我怎么能在Kotlin那样做,而不用复杂的自己附加0?

以下没有帮助,因为它不会有前面的0.

for (i in 1..1000) print(i)
Run Code Online (Sandbox Code Playgroud)

s1m*_*nw1 26

你可以使用padStart:

(0..1000)
    .map { it.toString().padStart(4, '0') }
    .forEach(::println)
Run Code Online (Sandbox Code Playgroud)

它是Kotlin标准库的一部分,适用于所有平台.

  • @GeertBerkers是的...删除了评论。听起来确实有误导作用,但我想Kotlin使用“反射”一词的方式有所不同。无论如何,函数引用都不会涉及运行时损失。 (2认同)

Mar*_*nik 13

如果您对特定于JVM的方法感到满意,那么您可以在Java中执行以下操作:

(1..1000).forEach { println("%04d".format(it)) }
Run Code Online (Sandbox Code Playgroud)

String.format是一个定义的扩展函数StringsJVM,它直接委托给底层函数String.format,因此它不在通用标准库中.


小智 6

在Kotlin中,您可以使用String.format()(与Java中相同):

"%04d".format(i)
Run Code Online (Sandbox Code Playgroud)

对于您的情况,您可以通过以下方式将其记录下来:

(1..1000).forEach { println("%04d".format(it)) }
Run Code Online (Sandbox Code Playgroud)


JTe*_*eam 6

使用 PadStart 而没有任何地图或多个循环,

(0..1000).forEach { println(it.toString().padStart(4, '0')) }
Run Code Online (Sandbox Code Playgroud)


vod*_*dan 5

需要明确的是,for-loop也很好:

for(i in 1..1000)
    println("%04d".format(i))
Run Code Online (Sandbox Code Playgroud)