任何机构都可以帮我解决这个问题
String expr ="1.3*60";
//Integer xx=Integer.valueOf();
int i = Integer.parseInt(expr);
System.out.println("xx "+i);
当我编译这个时它显示数字格式异常,我在java的开始阶段,所以请帮我解决这个问题,非常感谢
任何机构都可以帮我解决这个问题
String expr ="1.3*60";
//Integer xx=Integer.valueOf();
int i = Integer.parseInt(expr);
System.out.println("xx "+i);
当我编译这个时它显示数字格式异常,我在java的开始阶段,所以请帮我解决这个问题,非常感谢
Integer.parseInt
不计算数学表达式;它只是将整数的字符串格式转换为整数类型。
例如:
int x = 5;
int y = Integer.parseInt("5");
x == y; // => true
要评估诸如 之类的数学表达式1.3 * 60 = ?
,您可能需要搜索 Java 数学解析/评估库。(例如,请参阅此问题)
如果您使用的是 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));
}
}
检查此代码:
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 返回原语,我认为这是您需要的。
String[] tokens = expr.split(delims);
...
int i = Integer.parseInt(expr);
您已经将字符串拆分为 float 和 int,因此您需要将“tokens[0]”和“tokens[1]”字符串传递给 parseInt() 而不是原始字符串“expr”,尽管在这些字符串是一个浮点数,所以我不确定这是否会起作用。