2015-10-22 7 views
-2

Я пытаюсь создать программу, которая будет принимать ввод постфиксного выражения, оценить, что операнды действительны и применить оператор к этим операндам.Обработка выражений Postfix в 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. Нет проверки правильности выражения postfix.

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

 Смежные вопросы

  • Нет связанных вопросов^_^