我是Java新手,所以這可能是一個簡單的問題。將字符串轉換爲浮點Java
我已經做了一個計算器,用戶點擊按鈕,它將文本輸入到JTextField
。
我已使用.getText()
方法並將其保存到String
。
使用System.out.println()
我看到String
是「8 * 7 * 7-8/4」,很明顯,如果我可以執行此操作並獲得答案390,那麼這比分離它容易得多比看起來更復雜。
感謝馬特
我是Java新手,所以這可能是一個簡單的問題。將字符串轉換爲浮點Java
我已經做了一個計算器,用戶點擊按鈕,它將文本輸入到JTextField
。
我已使用.getText()
方法並將其保存到String
。
使用System.out.println()
我看到String
是「8 * 7 * 7-8/4」,很明顯,如果我可以執行此操作並獲得答案390,那麼這比分離它容易得多比看起來更復雜。
感謝馬特
您可以直接使用內置的Java腳本引擎實際上計算表達式"8*7*7-8/4"
。看看this post.
另請參閱this codereview post,它解釋瞭如何評估字符串中存在的數學表達式的一些優點。
我指的是'javax.script.ScriptEngineManager'和'javax.script.ScriptEngine'類,如我給出的帖子的鏈接所示。它內置在JDK 1.6中。 – anirudh
你能做到這一點,以獲得一個字符串的單精度浮點值:
Float.valueOf(string);
所以,你可以做到這一點,只要用戶輸入一個數字:
//method when user inputs a number, the String input will be what the user adds
float number = Float.valueOf(input);
此外,您可以做這樣的事情:
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String input = "40+2";
System.out.println(engine.eval(input));
嗨,我試過這個,我得到 異常在線程「AWT-EventQueue-0」java.lang.NumberFormatException:對於輸入字符串:「3 * 6」 –
@ user3494178第一個代碼,'Float.valueOf(string); ',只有在你使用單個數字時纔有效,比如'5.6'或'8'。像「8 + 3」和「5.6 * 22.1」這樣的東西在這裏不起作用。然而,使用'ScriptEngineManager mgr = new ScriptEngineManager();'的最底層代碼會爲你評估諸如'3 * 6'或'8 + 5'的表達式 – Jojodmo
添加jar文件jav8-JSR223-雙贏amd64-0.6到類路徑Java8或相應的jar按JDK版本並寫入下面的代碼
String val = "8*7*7-8/4";//make it to get from field.getText()
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine engine = engineManager.getEngineByName("JavaScript");
Object result = engine.eval(val);
System.out.println(result);
你可以使用一個堆棧轉換綴以後綴來獲得正確的操作順序。 –
http://stackoverflow.com/a/7552675/2282538 – Tyler
字符串浮動:http://stackoverflow.com/questions/7552660/java-convert-float-to-string-and-string-to-float –