Kotlin – while()的问题
我在Kotlin制作了一个计算器,而且我在解决while()
遇到的问题时遇到了问题。在代码的这个特定部分,我试图找到等式中的第一个运算符,但是我需要排除那些表示数字是否为负数的数字(或正数+
,可选),这些数字需要在括号之间加以表示: (-5)
var charay = charArrayOf('+', '-', '*', '/') var op = 0 var reference = 0 var bol = false while( bol == false && op != -1){ println(op) println(bol) println(bol == false && op != -1) op = input.indexOfAny(charay, reference) if (!input.get(op - 1).equals('(')){ bol = true }else{ reference = op + 1 } println(op) println(bol) println(bol == false && op != -1) }
为了测试一个正常的方程,我输入了方程4+4
,控制台如下所示:
0 false true 1 true false 0 false true Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -2 at java.lang.String.charAt(String.java:658) at CalculatorKt.CalculateValue(Calculator.kt:67) at CalculatorKt.CalculateValue(Calculator.kt:108) at CalculatorKt.main(Calculator.kt:119)
就像我怀疑,出于某种原因,变量重置在while()
结束while()
,这就是为什么它永远不会离开while()
。 谁能告诉我为什么?
阅读错误。 您正在尝试读取不存在于此语句中的索引处的字符串的字符:
input.get(op - 1)
你需要检查一下是什么op
,以确保找到它。 如果在字符串中找不到indexOfAny
返回-1
。 因为我们看不到什么是charay
,我们无法帮助你。