HOWTO · Java
Java의 후위 표현식
이 튜토리얼에서는 Java의 접미사 표현식에 대해 설명합니다.
이 페이지의 내용
후위 표현식은 연산자 우선 순위 규칙을 처리하거나 따를 필요가 없기 때문에 중위 표현식보다 평가하기 쉽고 빠릅니다. 또한 접미사 식에는 대괄호가 포함되어 있지 않습니다.
우리는 자바에서 접미사 표현을 빠르게 풀 수 있습니다. 이 기사에서는 Java에서 Postfix 표현식을 평가하는 방법과 주제를 더 쉽게 만드는 데 필요한 몇 가지 예제 및 설명을 배웁니다.
Java에서 후위 표현식 평가
시작하기 전에 Postfix 표현식이 어떻게 계산되는지 이해해야 합니다. 아래 표에 따라 Postfix 알고리즘을 단계별로 해결해 봅시다.
Expression: 82*9+
Character | Stack | Explanation
-------------------------------------------
8 8 8 is an Operand and pushed to Stack
2 8 2 2 is an Operand and pushed to Stack
* 16 (8*2) * is an Operator.
Poped 8 and 2 and multiply
them. Lastly pushed the result to Stack
9 16 9 9 is an Operand and pushed to Stack
+ 25 (16+9) + is an operator,
Stack popped 12 and 9 and added them.
Lastly pushed the result to Stack.
Result: 25
우리는 이미 후위 알고리즘을 풀 수 있는 방법에 대한 실용적인 예를 배웠습니다. 이제 Java를 사용하여 프로그래밍 방식으로 위 식을 해결해 보겠습니다. Java에서 접미사 알고리즘을 해결하려면 아래 예제를 따를 수 있습니다.
import java.util.Stack;
public class Postfix {
// Method to evaluate the postfix expression
static int EvaluatePostfix(String EXP) {
// Creating a stack
Stack<Integer> EqStack = new Stack<>();
// Scanning all the characters from the expression string
for (int i = 0; i < EXP.length(); i++) {
char ch = EXP.charAt(i);
// If the character is an operator then push it to the stack
if (Character.isDigit(ch))
EqStack.push(ch - '0');
// If the character is the operator, pop two elements for
// the stack and performs the mathematical operation.
else {
int Val_1 = EqStack.pop(); // Getting the first element
int Val_2 = EqStack.pop(); // Getting the second element
switch (ch) {
case '+':
EqStack.push(Val_2 + Val_1); // Perform add operation
break;
case '-':
EqStack.push(Val_2 - Val_1); // Perform subtraction operation
break;
case '/':
EqStack.push(Val_2 / Val_1); // Perform divide operation
break;
case '*':
EqStack.push(Val_2 * Val_1); // Perform multiply operation
break;
}
}
}
return EqStack.pop();
}
public static void main(String[] args) {
String EXP = "82*9+"; // The expression string
System.out.println("Postfix evaluation result: " + EvaluatePostfix(EXP));
}
}
우리는 이미 각 줄의 목적을 설명했습니다. 위의 예제 코드를 실행하면 콘솔에 아래와 같은 출력이 표시됩니다.
Postfix evaluation result: 25