Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串转换为浮点Java_Java_Arrays_String - Fatal编程技术网

将字符串转换为浮点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”。看看 另外,还可以看一看,它解释了如何计算字符串中的数学表达式的一些优点。您可以

我是Java新手,所以这可能是一个简单的问题

我制作了一个计算器,用户点击按钮,它将文本输入
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
等表达式