java 将文本框里的二元运算符表达式转换成后缀表达式,并显示在另一个文本框
时间: 2024-03-10 07:43:49 浏览: 63
js 文本框里粘贴一个图片url并显示
好的,我来给你讲一下如何实现这个功能。
首先,我们需要使用栈来实现中缀表达式转后缀表达式。具体步骤如下:
1. 遍历中缀表达式中的每个字符,如果是数字或字母,则直接输出到后缀表达式中;如果是操作符,则进行以下判断:
2. 如果栈为空或栈顶元素为左括号,则直接将操作符入栈;
3. 如果操作符的优先级比栈顶元素的优先级高,则将操作符入栈;
4. 如果操作符的优先级比栈顶元素的优先级低或相等,则将栈顶元素弹出并输出到后缀表达式中,直到栈为空或栈顶元素为左括号,然后将操作符入栈;
5. 如果遇到左括号,则将其入栈;
6. 如果遇到右括号,则将栈顶元素弹出并输出到后缀表达式中,直到遇到左括号,将左括号弹出丢弃;
7. 遍历完中缀表达式后,将栈中所有元素依次弹出并输出到后缀表达式中。
下面是具体的代码实现:
```java
public static String infixToPostfix(String infixExpression) {
StringBuilder postfixExpression = new StringBuilder();
Stack<Character> operationStack = new Stack<>();
for (int i = 0; i < infixExpression.length(); i++) {
char ch = infixExpression.charAt(i);
if (Character.isDigit(ch) || Character.isLetter(ch)) {
postfixExpression.append(ch);
} else if (ch == '(') {
operationStack.push(ch);
} else if (ch == ')') {
while (!operationStack.isEmpty() && operationStack.peek() != '(') {
postfixExpression.append(operationStack.pop());
}
operationStack.pop();
} else {
while (!operationStack.isEmpty() && getPriority(ch) <= getPriority(operationStack.peek())) {
postfixExpression.append(operationStack.pop());
}
operationStack.push(ch);
}
}
while (!operationStack.isEmpty()) {
postfixExpression.append(operationStack.pop());
}
return postfixExpression.toString();
}
private static int getPriority(char ch) {
switch (ch) {
case '+':
case '-':
return 1;
case '*':
case '/':
return 2;
case '^':
return 3;
default:
return 0;
}
}
```
接下来,我们需要将得到的后缀表达式显示在另一个文本框中。代码如下:
```java
String infixExpression = textField1.getText();
String postfixExpression = infixToPostfix(infixExpression);
textField2.setText(postfixExpression);
```
其中,`textField1` 是输入中缀表达式的文本框,`textField2` 是显示后缀表达式的文本框。
希望这个实现可以帮到你!
阅读全文