Kotlin中mapOf特定元素控制及随机键值校验实现疑问
Kotlin中mapOf特定元素控制及随机键值校验实现疑问
我来给你梳理下这个需求的实现思路哈,核心其实就是要把随机选中的key先存起来,这样校验用户输入的时候才能准确对应到它的value,不会出现“刚随机的key和校验时的key不一致”的问题,具体可以按这几步来做:
1. 先声明变量保存当前随机Key
首先在你的类(比如Activity或者Fragment)里定义一个变量,用来临时存储当前选中的随机key,不然每次校验的时候再去随机取,就和用户看到的key对不上了:
private var currentRandomKey: String? = null val wordList = mapOf("onekey" to "onevalue", "twokey" to "twovalue", "threekey" to "threevalue")
2. 生成并展示随机Key
接下来在合适的时机(比如页面初始化、用户点击“刷新题目”按钮时)生成随机key,并且把这个key展示给用户(比如显示在TextView上,让用户知道要输入哪个key对应的value):
// 获取随机key并保存到变量里 currentRandomKey = wordList.keys.random() // 示例:把随机key显示给用户 // keyDisplayTextView.text = currentRandomKey
小提示:如果你的Kotlin版本低于1.3,
random()方法可能无法直接使用,这时候可以转成List再通过索引随机获取:val keyList = wordList.keys.toList() val randomIndex = kotlin.random.Random.nextInt(keyList.size) currentRandomKey = keyList[randomIndex]
3. 按钮点击时校验用户输入
最后就是处理控制按钮的点击事件,获取EditText里的用户输入,和map中当前随机key对应的value做对比:
checkButton.setOnClickListener { // 获取用户输入并去除前后空格,避免空格导致的误判 val userInput = answerEditText.text.toString().trim() currentRandomKey?.let { selectedKey -> val correctValue = wordList[selectedKey] when { userInput.isEmpty() -> { // 处理用户未输入的情况,比如提示“请输入答案” } userInput == correctValue -> { // 输入正确,执行你需要的操作,比如弹出提示、刷新题目等 // Toast.makeText(this, "答对啦!", Toast.LENGTH_SHORT).show() } else -> { // 输入错误,提示用户正确答案或者其他操作 // Toast.makeText(this, "答错啦,正确答案是:$correctValue", Toast.LENGTH_SHORT).show() } } } ?: run { // 处理还没生成随机key的情况,比如用户还没加载题目就点了校验按钮 // Toast.makeText(this, "请先加载题目哦!", Toast.LENGTH_SHORT).show() } }
这样就能完美实现你想要的功能啦,核心就是记住要把随机选中的key存下来,校验时直接用这个key去map里取对应的值对比就行~
备注:内容来源于stack exchange,提问作者Yusuf Taha
相关产品推荐
相关产品推荐

