【发布时间】:2019-12-02 02:03:54
【问题描述】:
(我过去确实问过类似的问题,但文档有误,所以这是过去问题的正确版本)
请在 JavaScript 中帮助我:我正在编写的程序是一个以前缀表示法接收表达式并以中缀表示法输出相同表达式的程序。这个程序背后的想法如下:
如果用户输入 + 1 2,则预期输出为 1 + 2。所有有效符号为 +、-、*、/ 和 %。用户可以输入的数字数量应该是无限的(例如,如果我输入 + + + + + + + + + 1 2 3 4 5 6 7 8 9 10,程序应该返回 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10)。
有人可以帮我填写循环的注释部分,如果您认为有更好的方法来解决这个问题,我愿意接受!
function infix(input) {
var x = input.split(''); // splits each variable and stores it in an array
var output = [];
var final = " "; // will be used to store our infix expression
for (var i = 0; i < x.length; i++) {
//if x[i] is any of the following : "+, -, *, /, or %" , store it in array output at index 0
//else if x[i] is a number : store it in an index of array output that is >= 1
}
for (var j = 0; j < output.length; j++) {
var final = x[0] + x[j];
}
console.log(final);
}
infix("1 + 2 + 3") // should output "+ + 1 2 3"
infix("1 - 2 % 3 + 1 * 4") // should output "- % + * 1 2 3 1 4"
【问题讨论】:
-
您的问题描述了将前缀转换为中缀,但是您的代码块似乎想要将中缀转换为前缀。你要哪个?
-
是的,我不知道该怎么做,这就是为什么我把它留给任何其他解决方案。如果你有,请分享!为了清楚起见,程序应该采用中缀形式并输出该表达式的前缀版本。
-
当您说
if the user enters + 1 2 the expected output is 1 + 2时,您的意思是相反的吗?即将1 + 2转换为+ 1 2。如果是这样,请更新您的问题。
标签: javascript math prefix infix-notation