我在java中有一个奇怪的问题。我正在尝试制作一个数学表达式计算器,它将评估一个中缀数学表达式并在屏幕上返回最终结果。我已经使用堆栈来完成任务,到目前为止,我使用的是硬编码字符串作为输入,但后来我将其更改为命令行参数以达到同样的目的。我的问题是,尽管数据类型和字符串完全相同,但我正在使用的堆栈不会从命令行输入将值推入自身。
这是将数据压入堆栈的代码。
public class Expression
{
public static void main(String argv[]){
Stack<String> operator = new Stack<String>();
Stack<String> operand = new Stack<String>();
/*
String push[] = new String[argv.length];
for (int i = 0; i<push.length; i++){
push[i] = argv[i];
}
*/
for(int i = 0; i<argv.length; i++){
if(argv[i] == "+" || argv[i] == "-" || argv[i] == "*"
|| argv[i] == "/" || argv[i] == "^") {
operator.push(argv[i]);
} else if(argv[i] == "0" || argv[i] == "1" || argv[i] == "2"
|| argv[i] == "3" || argv[i] == "4" || argv[i] == "5"
|| argv[i] == "6" || argv[i] == "7" || argv[i] == "8"
|| argv[i] == "9") {
operand.push(argv[i]);
}
}
System.out.println(operand);
System.out.println(operator);
Stack<String> result = evaluateStack(operand, operator);
System.out.println(result.toString());
}
}
当我使用使用硬编码字符串的调试器时,它显示堆栈已正常填充,但使用命令行参数时,即使 for 循环完成,它也始终显示具有 0 个元素的堆栈。我究竟做错了什么?