gpt4 book ai didi

Javascript 将运算符从字符串插入堆栈

转载 作者:行者123 更新时间:2023-12-03 10:57:21 25 4
gpt4 key购买 nike

我目前正在用 Javascript 编写一个程序,用户在其中输入中缀表示法表达式作为字符串,然后将其转换为后缀表示法。我无法将每个运算符插入堆栈。以下是与我的问题相关的代码的两个主要部分。

var input = readLine();
postfixCalc(input);

//main function that converts an infix notation function to postfix
function postfixCalc (input) {
var operatorStack = new Stack();
print("length of input: " + input.length);//DEBUG
for (var i = 0; i < input.length; i++) {
if (isOperator(input[i])) {
operatorStack.push(input[i]);
print("Pushing to stack: " + input[i]);//DEBUG
} else {
print("Not an operator: " + input[i]);//DEBUG
}
print("This is what the input character is: " + input[i]);//DEBUG
}
}

//This function takes the current character being looked at in postfixCalc
//and returns true or false, depending on if the current character is
//a valid operator
function isOperator(y) {
//if y is a valid operator, return true.
if (y===("+" || "-" || "*" || "/" || "(" || ")")) {
print("What is being looked at: " + y);
return true;
} else {
return false;
}
}

仅比较该行中的第一个字符 if (y===("+"|| "-"|| "*"|| "/"|| "("|| ")")) { 将给定字符串推送到堆栈。我用来测试的字符串是“3*5+6”。关于为什么会这样的任何想法吗?

最佳答案

您的支票

 y===("+" || "-" || "*" || "/" || "(" || ")"))

只是

y==="+"
<小时/>

您需要将其分解为

if (y==="+" || y==="-" || ...) 

或者您可以将indexOf与数组或字符串一起使用。

if (["+","-","*","/","(",")"].indexOf(y) > -1)

或者正则表达式

关于Javascript 将运算符从字符串插入堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28222350/

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