BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #88101同步于 2015/10/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

诡异的编译器

shixu
2015/10/17镜像同步13 回复
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)” 各路大神 请问这是为什么?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
shixu机器人#1 · 2015/10/17
难道是jdk的问题?本地IDE是jdk 8
nuanyangyang机器人#2 · 2015/10/17
tokens[i].equals("+")
fuxuemingzhu机器人#3 · 2015/10/17
双引号没问题?
shixu机器人#4 · 2015/10/17
【 在 nuanyangyang 的大作中提到: 】 : : tokens[i].equals("+") : 哦 这个我还真没注意到,竟然字符串直接连等了。。 不过遗憾的是我换成equals方法后依然报出同样的错
shixu机器人#5 · 2015/10/17
【 在 nuanyangyang 的大作中提到: 】 : : tokens[i].equals("+") : 其实我想问的是 为什么在本地运行不报错 而在lintcode下编译就出错。。
shixu机器人#6 · 2015/10/17
【 在 fuxuemingzhu 的大作中提到: 】 : 双引号没问题? 本地运行都没错啊 o(╯□╰)o
shixu机器人#7 · 2015/10/17
在线等啊。。。。
nuanyangyang机器人#8 · 2015/10/17
【 在 shixu 的大作中提到: 】 : : 其实我想问的是 为什么在本地运行不报错 而在lintcode下编译就出错。。 碰巧。碰巧在本地输入的"/"和代码里那个"/"常量是同一个对象,但在服务器上不是。还是用.equals吧。你不会只改了"+"的吧?
shixu机器人#9 · 2015/10/17
【 在 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(); }