Java的反向波兰表示法?

时间:2014-11-08 03:53:11

标签: java string stack int java.util.scanner

我改变了我的代码以使用if-else语句,但我仍有问题。

当我尝试在unix中键入=时,它没有打印出来0.当我输入任何内容时它也没有打印出来。这有什么不对......请帮忙

对不起我是新手,请耐心等待我。

public static void processCommand(String s) {
  //If an "=" is received, print zero always
     if (s.charAt(s.length()-1) == '=') {
         System.out.println(0);

    }
}
public static boolean isOperator(String s) {
    return (s.equals("+") || s.equals("-") || s.equals("*") || s
        .equals("/"))  || s.equals("%");
  }

public static void main(String[] args)  {

String s;
//create a stack called st
Stack<Integer> st = new Stack<Integer>();

Scanner scan = new Scanner(System.in);



while (scan.hasNext())  {
s = scan.next();


    if (isOperator(s)) {
        if (st.size() > 1) {
            if (s.equals("+")) {
            st.push((Integer) st.pop() + (Integer) st.pop());
            } else if (s.equals("-")) {
            st.push(-(Integer) st.pop() + (Integer) st.pop());
            } else if (s.equals("*")) {
            st.push(-(Integer) st.pop() * (Integer) st.pop());
            } else if (s.equals("/")) {
            int x = st.pop();
            int y = st.pop();

            if (x == 0) {
            System.out.println("Cannot be divided by zero");
            } else {
            st.push(y/x);

                    }
                }
            }

     processCommand(s);
        }
    }



}

1 个答案:

答案 0 :(得分:0)

make processCommand(s);循环外的语句,它将起作用。