任何機構可以幫我解決這個問題Java類型轉換到整數
String expr ="1.3*60";
//Integer xx=Integer.valueOf();
int i = Integer.parseInt(expr);
System.out.println("xx "+i);
,當我編譯這個就說明數字格式例外,我在Java的起步階段,所以請幫助我出來解決這個,謝謝一噸
任何機構可以幫我解決這個問題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的數學分析/評估文庫。 (see this question, for example)
String[] tokens = expr.split(delims);
...
int i = Integer.parseInt(expr);
你已經分割字符串轉換爲一個float和一個int,所以你需要通過你的「令牌[0]」和「令牌[1]」串入parseInt函數(),而不是你的原始字符串「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返回基元,我認爲這是你需要的。
如果您使用的是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));
}
}
如何解決這個問題? – SANJAY
然後wat是這個解決方案 – SANJAY
你想得到什麼,表達結果? – kosa