我正在使用netbeans,在这方面我仍然是一个初学者。在main类中,我们应该输入一个表达式,它应该是一个字符串,它也应该显示转换后的后缀。然后是3个类,类Stack,类checkExpression和类Convert。我不知道这三个类该放什么。请帮帮我。谢谢:)
类用于分离不同的可重用组件,因此每个类应该有一个这样的组件。我将这样做:
-
Stack
是一个表示解析器堆栈的类。它有向栈上压入符号和检索符号的方法。 -
Convert
是使用Stack
类转换字符串的类。它包含一个方法,该方法在一个大循环中做以下事情(其中一些在单独的方法中):- 从输入字符串中获取token
- 将令牌追加到堆栈(使用
Stack
类提供的方法) - 当倒数第二个令牌是操作符时(或者倒数第三个令牌和倒数最后一个令牌是
(
和)
),用后缀形式的字符串替换最后三个令牌(例如replace '[…], "1", "+", "2"]与[…], "1 2 +"])
之后,返回Stack。此外,
Convert
将包含您的main
方法,该方法读取字符串,转换它,使用CheckExpression
检查结果,然后打印结果或错误消息。 - 我将使
CheckExpression
类包含一个方法,检查字符串是否被转换完全通过检查结果堆栈是否只有一个元素(结果)。
这假设了一个纯粹的左关联语法,因此,例如,3 + 4 * 5
将被解析为(3 + 4) * 5
(然而,3 + (4 * 5)
也将被解析为3 + (4 * 5)
)。
也许你应该问你的老师是否实现它作为一个纯粹的左联想解析器是可以的,是否这种方式结构类是好的?你期末成绩的50%已经很多了,所以你应该能从他/她那里得到更具体的信息。