我想在后缀表示法中使用以下表达式的帮助,例如“4 5.2 + 5.7 / 6.1 5--”。
首先,它必须读取表达式,然后测试运算符和操作数,然后计算表达式。最后,“document.write”每次推送和弹出都在单独的行中。请帮助,因为我已经用完了从 YouTube 到这个网站的地方。我什至不知道从哪里开始,所以一个非常简单的例子可以帮助我开始。我有一些 JS 知识,但并不精通,对于这个特定的示例,我在其他地方几乎找不到帮助。
我想在后缀表示法中使用以下表达式的帮助,例如“4 5.2 + 5.7 / 6.1 5--”。
首先,它必须读取表达式,然后测试运算符和操作数,然后计算表达式。最后,“document.write”每次推送和弹出都在单独的行中。请帮助,因为我已经用完了从 YouTube 到这个网站的地方。我什至不知道从哪里开始,所以一个非常简单的例子可以帮助我开始。我有一些 JS 知识,但并不精通,对于这个特定的示例,我在其他地方几乎找不到帮助。
考虑将问题分解为更简单的步骤。例如,您给出的原始问题陈述,用于评估字符串
4 5.2 + 5.7 / 6.1 5 - -
一次做所有事情太难了。最好将问题分解为可管理的部分。一种分解是:
将字符串分解为标记。
开发一个处理令牌的解释器。
这种分解是解决这类问题的标准方法。像PLAI这样的书涵盖了如何做第2部分。第2部分并不难:保持一堆数字。当你走令牌时:
如果您看到一个数字,请将其压入堆栈。
如果你看到一个运算符,将两个数字从堆栈中弹出,用运算符对其进行操作,然后将结果推回堆栈。
此过程是逆波兰表示法 ( RPN ) 计算器的核心。
如果您愿意使用正则表达式等工具,第一个问题也不会太难。正则表达式可以检测字符串中的模式并将字符串分成几段。例如,以下示例显示了我们如何将字符串沿空间边界拆分为一系列单词:
var s = "hello this is a test";
var pieces = s.split(" ");
出于您的目的,您的字符串不会总是很好地间隔开,因此您需要沿数字和运算符边界进行拆分。您需要尝试正则表达式模式,以使标记化按您希望的方式工作。
您要解决的问题实际上不是初学者材料。这个问题是给计算机科学第二学期的学生的,他们已经完成了诸如如何设计程序或其他类似课程之类的课程,并假设学生已经了解他们最喜欢的编程语言。如果你不能在不复制和粘贴别人的例子的情况下编写程序,那么你还没有做这个问题的背景。先做简单的问题,掌握语言,然后再回到这个问题上。