Android Studio模拟器数组最值问题:最小值显示异常求助
问题原因
你初始化数组时使用了Array(10) { 0 },这会创建一个包含10个初始值为0的数组。当你只输入数字1时,数组中仅1个元素被替换为1,剩余9个元素仍为初始的0,因此计算最小值时会取到0,而最大值不受影响是因为0小于1。
解决方案
有两种常见的解决方式,按需选择:
方式一:跟踪有效输入数量
- 新增变量记录实际输入的数字个数:
val arrX = Array(10) { 0 } var inputCount = 0 // 记录用户实际输入的数字数量
- 用户输入数字时,更新数组并递增计数:
// 假设userInputNumber是用户输入的数字 arrX[inputCount] = userInputNumber inputCount++
- 修改最小最大值计算函数,仅遍历有效输入的元素:
fun getMin(arrX: Array<Int>, count: Int): Int { var min = arrX[0] for (i in 0 until count) { min = min.coerceAtMost(arrX[i]) } return min } fun getMax(arrX: Array<Int>, count: Int): Int { var max = arrX[0] for (i in 0 until count) { max = max.coerceAtLeast(arrX[i]) } return max }
- 点击按钮时传入有效计数调用函数:
output.text = "The Min is ${getMin(arrX, inputCount)} and the Max is ${getMax(arrX, inputCount)}"
方式二:使用动态列表存储输入
改用MutableList存储用户输入,避免初始默认值的干扰:
- 初始化动态列表:
val inputList = mutableListOf<Int>()
- 用户输入时直接添加元素:
inputList.add(userInputNumber) // userInputNumber为用户输入的数字
- 直接利用列表内置方法计算最小最大值:
findMinAndMaxButton.setOnClickListener { val min = inputList.minOrNull() ?: 0 // 列表为空时可设置默认值 val max = inputList.maxOrNull() ?: 0 output.text = "The Min is $min and the Max is $max" }
内容的提问来源于stack exchange,提问作者SanZ
相关产品推荐
相关产品推荐

