【发布时间】:2018-12-03 00:36:05
【问题描述】:
我的代码如下所示 并且 if 或 while 的条件太长了,所以我想使用变量作为条件 我该怎么做?
我的示例代码是:
aTempArray.add(sInput[iStringOnPosition].toString())
// bCheckNextisDigit=true
while (iStringOnPosition + 1 < sInput.length &&
(sInput[iStringOnPosition + 1]).isDigit() || sInput[iStringOnPosition + 1] == '.') {
aTempArray[aTempArray.size - 1] = aTempArray[aTempArray.size - 1] +
sInput[iStringOnPosition + 1]
iStringOnPosition++
}
和
if (sInput[iStringOnPosition] == ' ') {
while (iStringOnPosition < sInput.length && sInput[iStringOnPosition] == ' ') {
iStringOnPosition++
}
} else if (sInput[iStringOnPosition] == '-' && (iStringOnPosition == 0 //checking value for negativity
|| sInput[iStringOnPosition - 1] == '-'
|| sInput[iStringOnPosition - 1] == '+'
|| sInput[iStringOnPosition - 1] == '*'
|| sInput[iStringOnPosition - 1] == '/')
) {
bNegativePresent = true
iStringOnPosition++
} else if ((sInput[iStringOnPosition] == '-' //checking for repeating operators
|| sInput[iStringOnPosition] == '+'
|| sInput[iStringOnPosition] == '*'
|| sInput[iStringOnPosition] == '/') && (iStringOnPosition == 0
|| sInput[iStringOnPosition - 1] == '-'
|| sInput[iStringOnPosition - 1] == '+'
|| sInput[iStringOnPosition - 1] == '*'
|| sInput[iStringOnPosition - 1] == '/')
) {
bError = true
return "Error: two or more operators in a row"
}
我想这样写
aTempArray.add(sInput[iStringOnPosition].toString())
var bCheckNextisDigit = iStringOnPosition + 1 < sInput.length &&
(sInput[iStringOnPosition + 1]).isDigit() || sInput[iStringOnPosition + 1] == '.'
bCheckNextisDigit=true
while (bCheckNextisDigit) {
aTempArray[aTempArray.size - 1] = aTempArray[aTempArray.size - 1] +
sInput[iStringOnPosition + 1]
iStringOnPosition++
}
和
if (first_condition) {
iStringOnPosition++
}
} else if (second_condition) {
bNegativePresent = true
iStringOnPosition++
} else if (last_condition) {
bError = true
return "Error: two or more operators in a row"
}
请帮忙解决这个问题
【问题讨论】:
标签: java android android-studio intellij-idea kotlin