我有一些代码行检查字符串中的括号。
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是否完美,但是当我单步执行调试器时,括号的条件每次都会失败。使用这样的条件是非法的吗?
答案 0 :(得分:1)
只需使用char原语:
if (command.charAt(index) == '['){ //Note the single quotes; double quotes won't work
生成更清晰的代码并始终有效。
答案 1 :(得分:0)
尝试运行此实验:
public class Test {
public static void main(String[] args) {
System.out.println(Character.getNumericValue('['));
}
}
并注意它返回-1。
来自API:
返回:字符的数值,作为非负int 值; -2如果字符的数值不是a 非负整数;如果字符没有数字值,则返回-1。
所以正确的方法是
已经指出 command.charAt(index) == '['
。