我试图使用循环来改变我的按钮的值,但是当我运行应用程序并单击按钮时,他只是改变了一次,按钮卡住了,就像它没有重置按钮时到达最后一个值。
按钮中只有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")
}