Java类型从String转换为Integer

时间:2012-10-30 03:18:16

标签: java

任何机构都可以帮助我解决这个问题

String expr ="1.3*60";
//Integer xx=Integer.valueOf();
int i = Integer.parseInt(expr);
System.out.println("xx "+i);

当我编译它时它显示数字格式异常,我在java的初级阶段,所以请帮我解决这个问题,谢谢你

5 个答案:

答案 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)

"1.3*60";

不是有效的integer

Integer.parseInt(...);只能解析有效整数

如果要使用表达式评估引擎。请参阅thisthis

答案 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));
    } 
}