循环改变按钮单击时的价值



我试图使用循环来改变我的按钮的值,但是当我运行应用程序并单击按钮时,他只是改变了一次,按钮卡住了,就像它没有重置按钮时到达最后一个值。

按钮中只有3个选项(正常,重复,洗牌)

这可能是一个完全愚蠢的问题,但我真的不知道我能做什么。

var repMode = 0
binding.btnRepMode.setOnClickListener {
do{
repMode++
}while(repMode < 2)
when(repMode){
0 -> normalRep()
1 -> repeatRep()
2 -> shuffleRep()
}
}

我不认为这样做

do {
repMode++
} while (repMode < 2)

做你认为它做的事。do-while循环将反复运行,直到while条件不再为真。这意味着它将继续增加repMode,直到它达到2,然后停止。现在还不清楚你是想让它在到达2时停止,还是重新开始。

停在2(0-1-2-2-2-2…)

如果你想增加repMode,但不允许它大于2,你可以使用这样的东西

if( repMode < 2 ) {
++repMode
}

repMode = (++repMode).coerceAtMost(2)

重新开始(0-1-2-0-1-2-…)

如果你想让repMode有一个重复的循环(0-1-2-0-1-2…)而不是卡在"2";那么你可以像这样使用模数运算符(%):

repMode = (++repMode) % 3

你可以很容易地在Android Studio中用一个简单的单元测试测试原始代码——结果总是2。我强烈建议您使用小型测试和日志/打印语句来帮助您解决遇到的此类问题。

@Test
fun testDoWhile() {
var repMode = 0
do {
repMode++
} while (repMode < 2)
println("TEST repMode = $repMode")
}

相关内容

  • 没有找到相关文章

最新更新