【问题标题】:Reverse Polish Notation for Java?Java的反向波兰表示法?
【发布时间】:2014-11-08 03:53:11
【问题描述】:

我将代码更改为使用 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);
        }
    }



}

【问题讨论】:

  • 简单:不要使用开关...
  • if else 语句应该可以吗?我是新手,所以不太了解。
  • 你为什么不试试呢? ;)
  • 你能从你的代码中提出一个明确的问题吗?
  • 抱歉我刚刚改了..请帮忙

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


【解决方案1】:

制作过程命令;循环外的语句,它将起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    相关资源
    最近更新 更多