kotlin 从1开始打印n次数字,需要打印(1 2 2 3 3 3 4)

e3bfsja2  于 2023-02-13  发布在  Kotlin
关注(0)|答案(5)|浏览(161)

我想不出如何解决以下问题:有一个数字n.输出数字到控制台的顺序由一个空格分隔,但要使下一个数字在迭代中输出的次数与它是一个数字一样多,并在同一时间,使有没有超过n位数在输出中. С任何人建议正确的算法?
示例:n = 7,需要在Kotlin中打印(1 2 2 3 3 3 4)
我的尝试:

var n = 7
var count = 1
var i = 1

    for (count in 1..n) {
        for (i in 1..count) {
                print(count)
        }
    }
}
sy5wg1nm

sy5wg1nm1#

var n = 11
var count = 1
var i = 1
var size = 0
    // loop@ for naming a loop in kotlin and inside another loop we can break or continue from outer loop   
  loop@  for (count in 1..n) {
        for (i in 1..count) {
                print(count)
                size++
                if (size == n){
                    break@loop
                }
                
        }
    }

你可以使用“@”来命名循环,如果你想从循环中中断,你可以在Kotlin中使用这个语法,它对我很有效,对于kotlin标记的break,你可以看下面的参考:link

lo8azlld

lo8azlld2#

var count = 1
var n = 7
for(count in 1..n) {
    print(count.toString().repeat(count))
}

count.toString()将整数转换为字符串,.repeat()函数将字符串重复count次。
如果您需要在每个数字之间添加空格,可以添加以下内容:print(" ")

olhwl3o2

olhwl3o23#

使用generateSequenceCollections函数:

val n = 7
println(generateSequence(1) {it + 1}
                 .flatMap{e -> List(e){e}}
                 .take(n)
                 .joinToString(" "))
axkjgtzd

axkjgtzd4#

你的例子是正确的,你必须在印刷字体之间加一个空格
你可以按照代码从这个链接Kotlin语言代码片段
或以下代码片段

fun main() {
var n = 7
var count = 1
var i = 1

for (count in 1..n) {
    for (i in 1..count) {
            print(count)
            print(' ')
    }
}

}

0sgqnhkj

0sgqnhkj5#

为了完整起见,这里有另一种方法,您可以编写自己的序列函数,该函数根据需要生成单个值(而不是创建中间列表)

sequence {
    var digit = 1
    while (true) {
        for (i in 1..digit) yield(digit)
        digit++
    }
}.take(7)
.joinToString(" ")
.run(::print)

在这种情况下不是什么大事,但很高兴知道!

相关问题