gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:43:12 25 4
gpt4 key购买 nike

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

最佳答案

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

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

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

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

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

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

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

关于java - 使用 3 个类将中缀转换为后缀(无缓冲区读取器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15729994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com