Kotlin 是否不可能将'repeat()'和'while()'组合起来循环3次?

Kotlin 是否不可能将'repeat()'和'while()'组合起来循环3次?,kotlin,Kotlin,我是科特林的新手。如何将repeat()和while()组合成循环?我知道如何使用以下两种方法进行循环: //方法1 对于(1..3中的i){ fortune=getFortune(getbirth()) println(“\n您的财富是:$fortune”) 如果(财富包含(“放松”)打破; } //方法2 var fortune:String=“” 变量i:Int=0//i=0 而(!fortune.contains(“放轻松”)&&i 4 28, 31 -> 2 else->birthd

我是科特林的新手。如何将
repeat()
while()
组合成循环?我知道如何使用以下两种方法进行循环:

//方法1
对于(1..3中的i){
fortune=getFortune(getbirth())
println(“\n您的财富是:$fortune”)
如果(财富包含(“放松”)打破;
}
//方法2
var fortune:String=“”
变量i:Int=0//i=0
而(!fortune.contains(“放轻松”)&&i 4
28, 31 -> 2
else->birthday.rem(财富.大小)
}
回归财富[指数]
}

我不完全理解您试图实现的目标,但我认为您是说您希望执行循环,直到:

  • fortune
    字符串包含“放轻松”,或:
  • 循环执行了三次
  • 我不是Kotlin专家,但我不相信在
    repeat
    循环中使用
    break
    语句是可能的,因此您需要执行以下操作:

    fun main(args: Array<String>) {
        var fortune: String
         for (i in 1..3) {
            fortune = getFortune(getBirthday())
            println("\nYour fortune is: $fortune")
            if (fortune.contains("Take it easy")) {
              break
            }
        }
    }
    
    fun main(args:Array){
    财富:字符串
    对于(1..3中的i){
    fortune=getFortune(getbirth())
    println(“\n您的财富是:$fortune”)
    如果(fortune.contains(“放轻松”)){
    打破
    }
    }
    }
    

    这将执行循环最多三次,但如果
    fortune
    包含“放轻松”,它可能会提前退出.

    将两者结合起来使其循环3次是没有意义的。您可以使用其中一个。当您这样嵌套循环时,就像将它们相乘。外部的
    重复
    3次,因此内部的
    while
    循环将从一开始就循环3次。但是,在您的示例中,您退出循环的ur标准将在第二次两次时立即满足,因此后续运行不会有输出

    基本上,如果您有一个重复的操作,但您有多个完成该操作的条件,那么解决方案不是添加另一个循环,而是必须添加退出该循环的附加逻辑

    由于
    repeat
    不是一个关键字,而是一个高阶函数,因此退出循环更为复杂,这样做会使代码难以阅读。因此,如果您有提前退出循环的任何条件,我不建议使用
    repeat
    。要提前退出循环,您必须在
    运行中进行包装
    scope函数,以便您可以从该scope函数返回以中断循环:

    fun main(args: Array<String>) {
        var fortune: String = ""
        run loop@{
            repeat(3) {
                if (fortune.contains("Take it easy")) {
                    return@loop
                }
                fortune = getFortune(getBirthday())
                println("\nYour fortune is: $fortune")
            }
        }
    }
    
    fun main(args:Array){
    var fortune:String=“”
    运行循环@{
    重复(3){
    如果(fortune.contains(“放轻松”)){
    return@loop
    }
    fortune=getFortune(getbirth())
    println(“\n您的财富是:$fortune”)
    }
    }
    }
    

    如果你想早点突破,使用
    for
    循环要比使用
    repeat
    简单得多,如@sweedflow的回答所示,因为你可以使用
    break
    关键字。

    你到目前为止尝试了什么?你在哪里卡住了?你说“重复这个while循环3次”是什么意思?看起来你已经限制了3圈。你想重复整个过程3次吗?你们太棒了。这是我第一次在这里问问题,所以我有点慢。我重写了我的问题。请再看一次我的问题!!请分享更多细节-你想实现什么?什么还不起作用?我还不完整我确信我理解,但这里有一个猜测:如果你很棒,请将
    while
    更改为
    。这是我第一次在这里问问题,所以我写得不够清楚。我已经知道如何使用for循环,但我不知道如何组合repeat()和while loop。请再看一次我的问题!!你正确理解了我的目标。谢谢你的回答,你可以从我的问题中看到,你的方法与我的方法1相同。从我问题的主题中,你可以看到我想要结合repeat()和while来实现我的目标。不可能使用repeat()吗为了实现我的目标,你准确地指出了我的问题。非常感谢!我不知道我只能使用repeat()和while()中的一个。虽然我的代码不会立即满足第二个两次,并且在满足我的标准之前,会有后续运行的输出。内部while()循环将继续运行,直到满足我的标准,因此重复(3)变得毫无意义。我感谢你花时间回答我的问题。既然你花了时间,你一定认为我的问题有价值。请你投票表决这个问题好吗?这个问题将来也会对其他人有利。我觉得你的问题对我来说很好。我想可能有人投票否决了你的问题,因为你的ar是一个边缘NSFW,这是一个主要用于专业设置的网站。
    
    fun main(args: Array<String>) {
        var fortune: String
         for (i in 1..3) {
            fortune = getFortune(getBirthday())
            println("\nYour fortune is: $fortune")
            if (fortune.contains("Take it easy")) {
              break
            }
        }
    }
    
    fun main(args: Array<String>) {
        var fortune: String = ""
        run loop@{
            repeat(3) {
                if (fortune.contains("Take it easy")) {
                    return@loop
                }
                fortune = getFortune(getBirthday())
                println("\nYour fortune is: $fortune")
            }
        }
    }