使用3个类将中缀转换为后缀(无缓冲读取器)

时间:2013-03-31 13:43:32

标签: java netbeans

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

这假设一个纯粹的左关联语法,例如,3 + 4 * 5将被解析为(3 + 4) * 5(但是,3 + (4 * 5)也会被解析为3 + (4 * 5))。

也许你应该问你的老师,将它作为一个纯粹的左关联解析器来实现是否合适以及这种构造类的方法是否合适?你的最终成绩的50%是很多,所以你应该能够从他/她那里获得更具体的成绩。