请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,关于leetcode150逆波兰表达式的问题

我在eclipse编译器上测试,结果正确。测试数据为[“2”,“1”,"+",“3”,"*"]
图片描述
在LeetCode用同样的数据测试,结果是0。这是为何?
图片描述
我的代码如下:

 public int evalRPN(String[] tokens) {
		Stack<String> stack=new Stack<>();
		int lNum; //运算符左边的数
		int rNum; //运算符右边的数
		int result=0;
		for(int i=0;i<tokens.length;i++){
			if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/"){
				rNum=Integer.parseInt(stack.pop());
				lNum=Integer.parseInt(stack.pop());
			    if(tokens[i]=="+"){
			    	result=lNum+rNum;
			    }else if(tokens[i]=="-"){
			    	result=lNum-rNum;
			    }else if(tokens[i]=="*"){
			    	result=lNum*rNum;
			    }else{
			    	result=lNum/rNum;
			    }
			    stack.add(String.valueOf(result));
			}else{
				stack.push(tokens[i]);
			}
		}
		return result;
	 }

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2019-11-10 14:47:30

所有的 == 都应该改成 .equals


String 的相等比较需要使用 .equals,因为是 Object


继续加油!:)

1 回复 有任何疑惑可以回复我~
  • 提问者 相信光变成光 #1
    老师,如果不改成 .equals的话,为什么本地编译器可以通过[“2”,“1”,"+",“3”,"*"]这个测试数据,而LeetCode则不行?我猜可能是JDK版本不同,或者是网站做了一些限制。
    回复 有任何疑惑可以回复我~ 2019-11-10 18:51:05
  • liuyubobobo 回复 提问者 相信光变成光 #2
    我不知道具体原因,应该和 JDK 版本有关。但不管怎样,Java Object 之间的比较应该用 equals 才是安全的。
    回复 有任何疑惑可以回复我~ 2019-11-11 02:13:48

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信