if / for循环调节多个字符串

时间:2014-04-08 11:59:00

标签: java string loops conditional-statements

我是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 );
                }

1 个答案:

答案 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
        }