Infix to Postfix Java2025年5月2日 | 8 分钟阅读 中缀和后缀表达式可以包含以下运算符:'+', '-', '%','*', '/' 以及从 a 到 z 的字母。运算符 (+, -) 的优先级低于运算符 (*, /, %) 的优先级。括号具有最高优先级,其中的表达式必须首先被转换。在本节中,我们将学习如何通过 Java 程序将中缀表达式转换为后缀表达式以及后缀表达式转换为中缀表达式。 为了进行转换,我们使用 堆栈数据结构。堆栈用于存储运算符和括号,以强制执行优先级。从左到右开始解析表达式。在继续本节之前,请确保您熟悉堆栈及其操作。让我们看看中缀和后缀表达式。 中缀表达式中缀表达式是指运算符写在两个或多个操作数之间的表达式。通常,我们使用中缀表达式。例如,考虑以下表达式。 后缀表达式后缀表达式是指运算符写在其操作数之后的表达式。例如,考虑以下表达式。 中缀与后缀表达式对比
中缀转后缀转换示例将(X - Y / (Z + U) * V) 中缀表达式转换为后缀表达式。
算法
让我们在 Java 程序中实现上述算法。 Java 程序将中缀表达式转换为后缀表达式InfixToPostfixConversion.java 输出 ![]() 解释 此 Java 代码使用堆栈数据结构将中缀表达式转换为后缀表达式。它使用一个堆栈类来实现基本的堆栈操作,如 push、pop、isEmpty() 和 peek。为了转换中缀表达式为后缀表达式,主类 InfixToPostfix 首先要求用户提交表达式,然后调用 toPostfix() 方法。 toPostfix() 方法处理中缀表达式中的每个字符。左括号被压入堆栈,而操作数(字母)被直接插入到后缀字符串中。当遇到右括号时,运算符从堆栈中弹出并添加到后缀字符串,直到遇到相应的左括号为止。 后缀转中缀转换示例将AB + CD - / 后缀表达式转换为中缀表达式。
算法
让我们在 Java 程序中实现上述算法。 Java 程序将后缀表达式转换为中缀表达式PostfixToInfixConversion.java 输出 ![]() 解释 此 Java 代码使用堆栈数据结构将后缀表达式转换为中缀表达式。isOperator() 方法检查一个字符是否为运算符。在 convertPostfixToInfix() 方法中,堆栈用于存储操作数和中间中缀表达式。 它遍历后缀表达式的每个字符。如果遇到运算符,它会从堆栈中弹出两个操作数,将它们与括号括起来的运算符连接起来,然后将生成的字符串推回堆栈。如果字符是操作数,它只会将其推入堆栈。最后,返回堆栈顶部的元素,该元素代表中缀表达式。 main() 方法创建一个 PostfixToInfixConversion 类的对象,提示用户输入后缀表达式,调用转换方法,并打印生成的中缀表达式。 评估后缀表达式后缀表达式在评估时特别方便,因为它们消除了对括号和显式运算符优先级规则的需求。以下是评估后缀表达式的算法:
让我们在 Java 中实现后缀表达式的评估。 PostfixEvaluation.java 输出 Result of evaluating postfix expression: 11 解释 在此程序中,运算符处理部分对于评估后缀表达式至关重要。遇到运算符时,会从堆栈中弹出顶部的两个操作数。这些操作数代表表达式中的右操作数和左操作数。然后,根据遇到的运算符,程序会在两个操作数之间执行相应的算术运算。结果随后被推回堆栈。 例如,当程序遇到 '*' 运算符时,它会弹出顶部的两个操作数,将它们相乘,然后将结果推回堆栈。类似地,对于 '+'、'-'、'/' 和 '%' 等其他运算符,程序会执行相应的算术运算。 在遍历完整个后缀表达式并评估所有运算符和操作数后,最终结果是堆栈中唯一剩余的元素,然后将其弹出并作为后缀表达式评估的结果返回。这种方法利用堆栈数据结构和算术运算,提供了一种高效且系统的方法来评估后缀表达式。 结论总而言之,了解中缀和后缀表达式以及如何转换它们对于计算机科学和编程至关重要,尤其是在解析和表达式评估等任务中。本文涵盖了中缀和后缀表达式的概念、它们的区别以及将中缀表达式转换为后缀表达式以及反之亦然的技术。对于这两种转换过程,我们还包含了详细的描述和 Java 实现。 下一主题Java 中的实例变量隐藏 |
定义了通过对象设置的两个类之间的连接。关联管理一对一、一对多和多对多关系。在 Java 中,对象之间的多重性由关联定义。它显示了对象如何相互通信以及它们如何使用功能...
阅读9分钟
Getter 和 setter 方法在 Java 编程中经常使用。Java 中的 Getter 和 setter 方法广泛用于访问和操作类字段的值。通常,类字段使用私有访问说明符进行修饰。因此,要访问它们,需要公共访问说明符...
阅读 10 分钟
java.text.ChoiceFormat 是一个包含 parse() 函数的类。要检索 ChoiceFormat 对象中特定格式的限制值,请使用 ChoiceFormat 类。语法:public Number parse(String text_name, ParsePosition status_Of_choice) 参数:- 其中此方法接受的参数是 text_name:即文本...
阅读 3 分钟
Java 编程语言允许我们创建不同类型的应用程序,如窗口应用程序或 Web 应用程序。用户界面是在开发应用程序时的一个重要因素。Java 应用程序的 GUI 可以使用 Java 编程中可用的不同颜色进行交互。Java 的图形...
5 分钟阅读
在 Java 中,mapToDouble() 方法是 Stream 接口的成员之一,该接口在 Java 8 中引入。它通过将给定的 ToDoubleFunction 应用于每个元素,将流的元素转换为原始双精度值,从而提供了一种高效的...
阅读 10 分钟
Java 是开发人员编写代码的首选。它是一种非常流行且成功的编程语言,用于构建应用程序。Java 开发人员的数量日益增加。它主要用于开发 Web 和移动应用程序。要成为...
5 分钟阅读
在本节中,我们将探讨如何使用嵌套循环在 Java 中创建菱形模式。菱形是一种具有相等边的平行四边形,但其对角与矩形或正方形不同。菱形模式是一种优美的几何排列,可以可视化...
阅读 4 分钟
在 Java 中,类是创建对象的蓝图。它定义了对象的属性和行为。泛型类是可以处理任何类型数据的类。在本文中,我们将探讨如何创建自定义泛型类...
阅读 4 分钟
"URLify" 描述了用 %20(通常用于表示 URL 中的空格)替换字符串中每个空格的做法。当构建可能包含空格的字符串以在不允许实际空格的 URL 中使用时,这一点至关重要。什么是 URLify?"URLify" 是...
7 分钟阅读
我们对互联网的依赖日益增加,我们与他人分享大量个人信息。由于我们的数据或个人信息不安全。为此,数据的安全性对我们变得至关重要。我们需要保守数据机密,...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India