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 ,我们无法帮助你。

Interesting Posts