2015-10-22 46 views
-2

我試圖創建一個程序,將採取一個後綴表達式的輸入,評估該操作數是有效的和運營商適用於那些操作數。過程後綴表達式在Java中

我知道Scanner類採取輸入我有這個沒有問題的。目前我有:

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 

    String equation; 

    System.out.println("Please enter a postfix expression:"); 

    equation = scan.nextLine(); 

我現在需要處理用戶鍵入的內容。我追求這個問題的更簡單的解決方案。

+0

比更容易??? – fabian

+0

你已經嘗試過什麼方法? –

回答

2

使用java.util.Stack。下面這個例子只是爲了演示使用Stack。沒有檢查後綴表達式的有效性。

public static void main(String[] args) { 

    Scanner scan = new Scanner(System.in); 

    Stack<Integer> stack = new Stack<Integer>(); 

    System.out.println("Please enter a postfix expression:"); 

    String equation = scan.nextLine(); 

    String[] terms = equation.split(" "); 

    for (String s : terms) { 

     if (s.equals("+")) stack.push(stack.pop() + stack.pop()); 
     else if (s.equals("-")) stack.push(-stack.pop() + stack.pop()); 
     else if (s.equals("*")) stack.push(stack.pop() * stack.pop()); 
     else if (s.equals("/")) { 
      int a = stack.pop(); 
      int b = stack.pop(); 
      stack.push(b/a); 
     } 
     else stack.push(Integer.parseInt(s)); 
    } 
    System.out.println("result: " + stack.pop()); 
}  

對於更復雜的例子來看看http://kevinyavno.com/blog/?p=52