将字符串转换为浮点Java
我是Java新手,所以这可能是一个简单的问题 我制作了一个计算器,用户点击按钮,它将文本输入将字符串转换为浮点Java,java,arrays,string,Java,Arrays,String,我是Java新手,所以这可能是一个简单的问题 我制作了一个计算器,用户点击按钮,它将文本输入JTextField 我使用了.getText()方法,并将其保存到字符串中 使用System.out.println()我已经看到字符串是“8*7*7-8/4”,显然,如果我可以执行它并得到答案390,那么这将比拆分它并使它看起来更复杂容易得多 感谢Matt您可以直接使用内置Java脚本引擎计算表达式“8*7*7-8/4”。看看 另外,还可以看一看,它解释了如何计算字符串中的数学表达式的一些优点。您可以
JTextField
我使用了.getText()
方法,并将其保存到字符串中
使用System.out.println()
我已经看到字符串是“8*7*7-8/4”,显然,如果我可以执行它并得到答案390,那么这将比拆分它并使它看起来更复杂容易得多
感谢Matt您可以直接使用内置Java脚本引擎计算表达式“8*7*7-8/4”
。看看
另外,还可以看一看,它解释了如何计算字符串中的数学表达式的一些优点。您可以这样做,从字符串中获取浮点值:
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));
上面的代码来自:根据JDK版本,将jar文件jav8-jsr223-win-amd64-0.6添加到Java8的类路径或相应的jar中,并编写下面的代码
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);
您可以使用堆栈将中缀转换为后缀,以获得正确的操作顺序。我指的是javax.script.ScriptEngineManager
和javax.script.ScriptEngine
类,如我给出的文章链接所示。它内置于JDK 1.6.Hi中,我尝试了这个,在线程“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
等表达式