条件中的Java特殊字符

时间:2013-12-05 23:36:16

标签: java

我有一些代码行检查字符串中的括号。

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 个答案:

答案 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) == '['