【发布时间】:2014-05-29 11:31:15
【问题描述】:
我正在编写中缀到后缀转换的代码。但是,我找不到检查 (,)、+、- 等运算符的方法。我可以使用 ASCII,但是有什么方法可以使用(比如 isLetter() 等)吗?另外我该如何定义运算符优先级?
【问题讨论】:
标签: java stack operator-precedence postfix-notation
我正在编写中缀到后缀转换的代码。但是,我找不到检查 (,)、+、- 等运算符的方法。我可以使用 ASCII,但是有什么方法可以使用(比如 isLetter() 等)吗?另外我该如何定义运算符优先级?
【问题讨论】:
标签: java stack operator-precedence postfix-notation
。我可以使用 ASCII 但有什么方法吗(比如 isLetter() 等) 我可以使用哪个?
我可以建议您使用Character.isDigit('1') 或Character.isLetter('A') 来检查此字符是数字还是字母,但作为自定义我会选择ArrayList。
ArrayList<Character> alist=new ArrayList<>();
alist.add('+');
alist.add('-');
alist.add('/');
alist.add('%');
char c='A';
if(alist.contains(c))
{
System.out.println("UNREACHABLE");
}
其次,您可以使用运算符优先级
HashMap<Character, Integer> hm=new HashMap<>();
hmap.put('+',1);
用键值对来确定它的优先级
【讨论】:
您可以尝试 Character 类中的 getType 函数。它还有许多常量需要检查,例如:MATH_SYMBOL。
Character 类也有 isDigit、isLetter 等方法。
更多信息: http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#getType(int)
【讨论】: