我目前正在编写一个程序,在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;
}
}
如果(y==(“| |”-“| |”*“| |”/“| |”(“| |”)){从给定字符串推送到堆栈中,则只比较此行中的第一个字符。我一直用于测试的字符串是“3*5 6”。有没有想过为什么会这样?
你的支票
y===("+" || "-" || "*" || "/" || "(" || ")"))
只是
y==="+"
你要么把它当作
if (y==="+" || y==="-" || ...)
或者可以将indexOf与数组或sting一起使用。
if (["+","-","*","/","(",")"].indexOf(y) > -1)
或正则表达式
我的C++代码,推入一个字符串到我的堆栈 当我和Java一起运行时,我收到了一份坠毁报告,有没有办法修复它? Java运行时环境检测到一个致命错误: SIGSEGV(0xB)(PC=0x00007F29421A0207,PID=18007,TID=0x00007F2942D3E700) JRE版本:Java(TM)SE运行时环境(8.0_144-B01)(build 1.8.0_144-B01)J
问题内容: 如何将字符串转换成运算符plus?谢谢! 问题答案: 使用查找表:
问题内容: 有什么方法可以将堆栈跟踪作为字符串获取? 查看调试包(https://golang.org/pkg/runtime/debug/),它只能打印到标准输出。 问题答案: 将格式化的堆栈跟踪放到提供的中。然后,您可以将其转换为字符串。 您还可以使用,分配足够大的缓冲区来容纳整个堆栈跟踪,并使用将该跟踪放入其中,并返回缓冲区()。
目标 了解实例化 String 对象和设置其值的多种方法 了解字符串串联和方法链 熟悉 Java 语言的算术运算符 字符串 目前为止,您已经遇到过多种类型的 String。在 Java 语言中,字符串是 String 类型的一级对象,包含可帮助您处理它们的方法。 在 C 语言中,处理字符串需要大量精力,因为它们是您必须操作的 8 位字符组成的以 null 结尾的数组。(在字符串方面,与 C 语言最
问题内容: 假设我有两个陈述。 哪个是堆栈内存,哪个存储在堆中? 两者之间有什么区别? 创建了多少个对象,内存中的引用如何? 最佳做法是什么? 问题答案: 所有对象都存储在堆中(包括其字段的值)。1个 局部变量(包括参数)始终包含原始值或引用,并存储在堆栈中。1个 因此,对于您的两行: 您将在堆上有两个对象(两个包含的String对象)和两个引用(每个对象一个)在堆栈上(提供且是局部变量)。 (实
问题内容: 我对String串联感到困惑。 输出为: 50abc20 50abc1010 我想知道为什么在两种情况下都将 20 + 30 加在一起,但是 10 + 10 需要加上括号(s1)而不是串联到String(s2)。请在此处说明String运算符的工作方式。 问题答案: 加法保持关联。以第一种情况 在第二种情况下: