任何机构都可以帮助我解决这个问题
String expr ="1.3*60";
//Integer xx=Integer.valueOf();
int i = Integer.parseInt(expr);
System.out.println("xx "+i);
当我编译它时它显示数字格式异常,我在java的初级阶段,所以请帮我解决这个问题,谢谢你
答案 0 :(得分:6)
Integer.parseInt
不评估数学表达式;它只是将整数的String格式转换为Integer类型。
例如:
int x = 5;
int y = Integer.parseInt("5");
x == y; // => true
要评估像1.3 * 60 = ?
这样的数学表达式,您可能希望搜索Java数学解析/评估库。 (see this question, for example)
答案 1 :(得分:3)
答案 2 :(得分:0)
String[] tokens = expr.split(delims);
...
int i = Integer.parseInt(expr);
您已经将字符串拆分为float和int,因此您需要将“tokens [0]”和“tokens [1]”字符串传递给parseInt()而不是原始字符串“expr”,虽然这些字符串是浮点数,所以我不确定即使这样也行。
答案 3 :(得分:0)
检查此代码:
String expr ="1.3*60";
String[] tokens = expr.split("\\*");
float j = Float.parseFloat(tokens[0]);
float k = Float.parseFloat(tokens[1]);
System.out.println(j);
System.out.println(k);
System.out.println(j*k);
所以,首先你必须使用常规表达式进行标记(我不会谈论这个),所以这就是你所拥有的分裂部分。然后,由于您要解析的一些数字不是整数,您应该使用浮点数或相应的类型,或者使用try / catchs或其他来忽略非int值。最后,valueOf返回对象,而parseX返回原语,我认为这是你需要的。
答案 4 :(得分:0)
如果您使用的是jdk 1.6,则可以使用内置的javascript引擎来评估表达式:
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
public class expressionEvaluate{
public static void main(String[] args) throws Exception{
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine scriptEngine = sem.getEngineByName("JavaScript");
String expr = "1*3+5";
System.out.println(scriptEngine.eval(expr));
}
}