我有几行代码可以检查字符串中的括号。
while (index <= command.length()-1 && done == false) {
if (command.charAt(index) == 123) { // ASCII value for open bracket
braces++;
token = token + command.charAt(index);
index++;
} else if (command.charAt(index) == 125) {
braces--;
token = token + command.charAt(index);
index++;
} else if (braces > 0) {
if (command.charAt(index) > 47 && command.charAt(index) < 58 || command.charAt(index) > 64 && command.charAt(index) < 123) {
token = token + command.charAt(index);
index++;
} else
index++;
} else if (braces == 0) {
if (command.charAt(index) > 47 && command.charAt(index) < 58) {
token = token + command.charAt(index);
index++;
if (command.charAt(index) == 123)
done = true;
} else {
index++;
done = true;
}
}
}
}
我的问题是这一行:if (command.charAt(index) == 123)
使用ASCII值检查a-Z和0-9的效果很好,但是当我单步调试时,括号的条件每次都失败。
像这样使用条件检查是非法的吗?
2条答案
按热度按时间mw3dktmi1#
只需使用char原语:
产生更清晰的代码,并始终工作。
kwvwclae2#
尝试运行此实验:
注意它返回-1。
来自API:
返回:字符的数值,为非负整数值;如果字符具有非负整数的数值,则返回-2;如果字符没有数值,则为-1。
所以正确的方法是
command.charAt(index) == '['
,正如已经指出的。