返回信息流lintcode上面的:逆波兰表达式求值
直接上代码:
public int evalRPN(String[] tokens) {
// Write your code here
Stack<Integer> numStack = new Stack();
int i = 0;
while (i<tokens.length){
if (tokens[i] == "+" || tokens[i] == "-"|| tokens[i] == "*"|| tokens[i] == "/")
{
int b = numStack.pop();
int a = numStack.pop();
if (tokens[i] == "+")
numStack.push(a+b);
if (tokens[i] == "-")
numStack.push(a-b);
if (tokens[i] == "*")
numStack.push(a*b);
if (tokens[i] == "/")
numStack.push(a/b);
}
else
numStack.push(Integer.parseInt(tokens[i]));
i++;
}
return numStack.peek();
}
问题:对已测试用例["0","3","/"],在本地IDE上面运行上述代码没错,而在lintcode环境下 总是报一个错“Exception in thread "main" java.lang.NumberFormatException: For input string: "/" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:481) at java.lang.Integer.parseInt(Integer.java:527) at Solution.evalRPN(Solution.java:28) at Main.main(Main.java:25)”
各路大神 请问这是为什么?
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #88101同步于 2015/10/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖
诡异的编译器
shixu
2015/10/17镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 nuanyangyang 的大作中提到: 】
: : tokens[i].equals("+")
:
哦 这个我还真没注意到,竟然字符串直接连等了。。
不过遗憾的是我换成equals方法后依然报出同样的错
【 在 nuanyangyang 的大作中提到: 】
: : tokens[i].equals("+")
:
其实我想问的是 为什么在本地运行不报错 而在lintcode下编译就出错。。
【 在 shixu 的大作中提到: 】
:
: 其实我想问的是 为什么在本地运行不报错 而在lintcode下编译就出错。。
碰巧。碰巧在本地输入的"/"和代码里那个"/"常量是同一个对象,但在服务器上不是。还是用.equals吧。你不会只改了"+"的吧?
【 在 nuanyangyang 的大作中提到: 】
:
: 碰巧。碰巧在本地输入的"/"和代码里那个"/"常量是同一个对象,但在服务器上不是。还是用.equals吧。你不会只改了"+"的吧?
public int evalRPN(String[] tokens) {
// Write your code here
Stack<Integer> numStack = new Stack();
int i = 0;
while (i<tokens.length){
if (tokens[i].equals("+") || tokens[i].equals("-")|| tokens[i].equals("*")|| tokens[i].equals("/"))
{
int b = numStack.pop();
int a = numStack.pop();
if (tokens[i].equals("+"))
numStack.push(a+b);
if (tokens[i].equals("-"))
numStack.push(a-b);
if (tokens[i].equals("*"))
numStack.push(a*b);
if (tokens[i].equals("/"))
numStack.push(a/b);
}
else
numStack.push(Integer.parseInt(tokens[i]));
i++;
}
return numStack.peek();
}