You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:39:38