我是Java新手,对编程比较陌生。在上面的代码中,我只需要添加某种条件来检查c String是否包含以下值之一:(*,/,+, - ,(,),^),然后继续说明(从代码中标记为“B”的地方)
论坛上的其他相关问题没有帮助;也许我正在寻找错误的工具来实现这一目标。我不知道该怎么做,除了使用if和复制B部分我感兴趣的每一个值(不是很优雅的方式,我必须承认;)
非常感谢!
private static void convertOnpToInf(String onp) {
Stack stack = new Stack();
try {
for (int i=0; i<onp.length(); i++) {
String c = String.valueOf( onp.charAt(i) );
if (c.matches("[a-z]+")) {
stack.push(c);
// B部分
} else {
if (stack.isEmpty()) {
throw new Exception("error");
}
String a = stack.pop();
if (stack.isEmpty()) {
throw new Exception("error");
}
String b = stack.pop();
if ( addBracket(convertToOperator(c), onp, i) ) {
stack.push("(" + b + c + a + ")");
} else {
stack.push( b + c + a );
}
答案 0 :(得分:0)
我希望我理解得对。以下是两种方法:
1:
if (onp.charAt(i) == '*' || onp.charAt(i) == '+' || ...) { // all your operators
//B
}
2:
private static final Set<String> operators = new HashSet<String>(Arrays.asList("*", "+", "-")); // all your operators
String c = "*";
if (operators.contains(c)) {
// B
}