0

我正在使用netbeans,但我仍然是这方面的初学者。在主类中,我们应该输入一个应该是字符串的表达式,它还应该显示转换后的后缀。然后是3个类,Stack类,checkExpression类和Convert类。我不知道在这三个课程中放什么。请帮我。谢谢 :)

4

1 回答 1

1

类有利于分离不同的、可重用的组件,因此每个类应该有一个这样的组件。我会这样做:

  • Stack是一个表示解析器堆栈的类。它具有将符号压入堆栈和检索它们的方法。
  • Convert是一个使用Stack类来转换字符串的类。它包含一个方法,该方法在一个大循环中执行以下操作(其中一些在单独的方法中):

    • 从输入字符串中获取一个标记
    • 将令牌附加到堆栈(使用Stack类提供的方法)
    • 当倒数第二个标记是运算符(或倒数第三个和最后一个标记是(and ))时,将最后三个标记替换为后缀形式的字符串(例如,替换 `[..., "1", "+" , "2"] 和 [..., "1 2 +"])

    之后,返回堆栈。此外,Convert将包含main读取字符串、对其进行转换、使用检查结果CheckExpression然后打印结果或错误消息的方法。

  • 我将创建CheckExpression一个包含一个方法的类,该方法通过检查结果堆栈是否只有一个元素(结果)来检查字符串是否完全转换。

这假设一个纯粹的左结合语法,例如,3 + 4 * 5将被解析为(3 + 4) * 5(然而,3 + (4 * 5)也将被解析为3 + (4 * 5))。

也许您应该问您的老师,将其实现为纯左关联解析器是否可以,以及这种构造类的方式是否良好?你最终成绩的 50% 是很多,所以你真的应该能够从他/她那里得到更具体的东西。

于 2013-03-31T14:12:25.160 回答