如何在Kotlin中实现仅3个输入有且仅有1个正数时输出true
问题分析
- 你当前使用的代码通过逻辑或
||实现的是三个整数中只要存在至少1个符合>=1的判定就返回true,和需求要求的「有且仅有1个为正数」逻辑不符。
代码调整方案
推荐使用统计符合要求的数值数量的方案实现,逻辑简洁易维护:
fun main() { val num1 = readLine()!!.toInt() val num2 = readLine()!!.toInt() val num3 = readLine()!!.toInt() // 统计三个数中正数的数量,判断是否恰好为1 val positiveCount = listOf(num1, num2, num3).count { it > 0 } println(positiveCount == 1) }
如果不想使用集合操作,也可以直接枚举所有仅单个数为正的场景:
fun main() { val num1 = readLine()!!.toInt() val num2 = readLine()!!.toInt() val num3 = readLine()!!.toInt() val result = (num1 > 0 && num2 <= 0 && num3 <= 0) || (num2 > 0 && num1 <= 0 && num3 <= 0) || (num3 > 0 && num1 <= 0 && num2 <= 0) println(result) }
补充说明
- 常规正数判定标准为
> 0,如果你需要沿用原有代码的>=1作为正数判定条件,将上述代码中的判断条件替换为it >= 1、<=0替换为<1即可。
内容的提问来源于stack exchange,提问作者Hicham Akoudad
相关产品推荐
相关产品推荐

