gpt4 book ai didi

kotlin - 如何正确抛出IllegalArgumentException?

转载 作者:行者123 更新时间:2023-12-02 13:28:27 25 4
gpt4 key购买 nike

我有一个函数可以从字符串参数中获取摘要

fun plusMinus(expression: String): Int {
try {
val numbers = expression.split(" ")
} catch (e: Exception) {
throw e
}
var sum = 0
val numbers = expression.split(" ")
if (expression[0].isDigit()) {
sum = numbers[0].toInt()
for (i in 1 until numbers.size) {
if (numbers[i] != "+" && numbers[i] != "-") {
when (numbers[i - 1]) {
"+" -> sum += numbers[i].toInt()
"-" -> sum -= numbers[i].toInt()
}
}
}
}
return sum
}
问题在于,我不理解如何抛出IllegalArgumentException权限;有此功能的测试:
assertEquals(4, plusMinus("2 + 2"))
assertEquals(6, plusMinus("2 + 31 - 40 + 13"))
assertThrows(IllegalArgumentException::class.java) { plusMinus("+2") }
assertThrows(IllegalArgumentException::class.java) { plusMinus("2+2") }
assertThrows(IllegalArgumentException::class.java) { plusMinus("44 - - 12") }
因此,如果存在以下情况,则应引发异常:1)标记之间没有空格2)彼此附近没有相等的标记(例如在第五次测试中)

最佳答案

我认为有两个容易遵循的规则:

  • 即使您的拆分中的索引也必须是数字
  • 拆分中的
  • 不均匀索引必须为+-

  • 其他所有情况均无效。这样够了吗?
    numbers.forEachIndexed { index, value ->
    if (index % 2 == 0 && !value.matches(Regex("[0-9]+"))) throw IllegalArgumentException()
    if (index % 2 != 0 && !value.matches(Regex("[+-]+"))) throw IllegalArgumentException()
    }
    编辑:必须进行改进以覆盖 + 1 - 1之类的字符串:)

    关于kotlin - 如何正确抛出IllegalArgumentException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62969312/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com