Kotlin - while()的问题

时间:2017-08-27 02:26:45

标签: error-handling while-loop kotlin reset

我在Kotlin制作了一个计算器,我在解决-时遇到的问题时遇到了问题。在代码的这个特定部分,我试图找到第一个运算符。方程式,但我需要排除那些表示数字是否为+(或正(-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()的末尾重置,这就是为什么它永远不会离开{{1}}的原因。谁能告诉我为什么?

1 个答案:

答案 0 :(得分:3)

阅读错误。您试图在此语句不存在的索引处读取字符串的字符:

input.get(op - 1)

您需要先检查op是什么,以确保找到它。如果在字符串中找不到,则indexOfAny会返回-1。因为我们无法看到charay是什么,所以我们无法帮助您。