Kotlin - while() 的问题
Kotlin - Problems with 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()
的原因。谁能告诉我为什么?
读取错误。您正在尝试读取此语句不存在的索引处的字符串字符:
input.get(op - 1)
您需要先检查 op
是什么,以确保找到它。 indexOfAny
returns -1
如果在字符串中找不到。因为我们看不到 charay
是什么,所以我们无法进一步帮助您。
我正在用 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()
的原因。谁能告诉我为什么?
读取错误。您正在尝试读取此语句不存在的索引处的字符串字符:
input.get(op - 1)
您需要先检查 op
是什么,以确保找到它。 indexOfAny
returns -1
如果在字符串中找不到。因为我们看不到 charay
是什么,所以我们无法进一步帮助您。