我正在尝试编写一个简单的计算器。
public static String cal(){
String a="-60-1+40";
if(a.matches("-?[1-9][0-9]?([\\+-][1-9][0-9]?)+")){
System.out.println(a);
String operators[]=a.split("[0-9]+");
String operands[]=a.split("[+-]");
int agregate = Integer.parseInt(operands[0]);
for(int i=1;i<operands.length;i++){
if(operators[i].equals("+"))
agregate += Integer.parseInt(operands[i]);
else
agregate -= Integer.parseInt(operands[i]);
}
return Integer.toString(agregate);
}else throw new invalidExpressionException(a+" is a Invalid expression");
}
我有这个函数,但是当我尝试运行它时,如果字符串的第一个字符是 "-"
,我会得到一个 NumberFormatException
。所有其他情况似乎都是正确的,只有那个失败了。我已经尝试修复了一段时间,但找不到解决方法。
run:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
-60-1+40
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at calculator.Calculator.cal(Calculator.java:20)
at calculator.Calculator.main(Calculator.java:9)
最佳答案
按照@Ben 的评论,解决方法是检查第一个字符是否为“-
”,在这种情况下,在处理之前将0
附加到字符串它(-n 可以从 0 减去数字 n 得到):
-1+2-3
,应该变成0-1+2-3
if(a.startsWith("-")){
a = "0" + a;
}
关于java - 使用正则表达式运行计算器程序时出现 NumberFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50949168/