Java 字符串指数
Java String exponents
如何计算 String number = "3^6"
?
有计算指数的数学选项,但我如何将字符串转换为 java 数学 class 可以解决的问题?
String s = "3^6";
String[] sArr = s.split("\^");
double[] dArr = {Double.valueOf(sArr[0]), Double.valueOf(sArr[1])};
System.out.println(Math.pow(dArr[0], dArr[1]));
这应该可以帮助您入门。打印:
729.0
当然,对于复杂的方程式,您将不得不编写相应的代码来处理它。
如果您的方程式有括号,您 Stack
可以检查左括号和右括号。如果等式类似于:3 ^ 6 ^ 2
,则循环计算指数。
如果您想进行通用表达式评估,请查看此内容:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Main {
static ScriptEngineManager mgr = new ScriptEngineManager();
static ScriptEngine engine = mgr.getEngineByName("mvel");
public static void main(String[] args) throws ScriptException {
System.out.println(eval("3^6"));
System.out.println(eval("(1+2)^(2*3)"));
System.out.println(eval("2^2^2"));
}
private static Number eval(String expression) throws ScriptException {
int idx = expression.indexOf('^');
if (idx > 0) {
String left = expression.substring(0, idx);
String right = expression.substring(idx + 1);
double base = eval(left).doubleValue();
double exp = eval(right).doubleValue();
return Math.pow(base, exp);
}
return (Number) engine.eval(expression);
}
}
输出:
729.0
729.0
16.0
如何计算 String number = "3^6"
?
有计算指数的数学选项,但我如何将字符串转换为 java 数学 class 可以解决的问题?
String s = "3^6";
String[] sArr = s.split("\^");
double[] dArr = {Double.valueOf(sArr[0]), Double.valueOf(sArr[1])};
System.out.println(Math.pow(dArr[0], dArr[1]));
这应该可以帮助您入门。打印:
729.0
当然,对于复杂的方程式,您将不得不编写相应的代码来处理它。
如果您的方程式有括号,您 Stack
可以检查左括号和右括号。如果等式类似于:3 ^ 6 ^ 2
,则循环计算指数。
如果您想进行通用表达式评估,请查看此内容:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Main {
static ScriptEngineManager mgr = new ScriptEngineManager();
static ScriptEngine engine = mgr.getEngineByName("mvel");
public static void main(String[] args) throws ScriptException {
System.out.println(eval("3^6"));
System.out.println(eval("(1+2)^(2*3)"));
System.out.println(eval("2^2^2"));
}
private static Number eval(String expression) throws ScriptException {
int idx = expression.indexOf('^');
if (idx > 0) {
String left = expression.substring(0, idx);
String right = expression.substring(idx + 1);
double base = eval(left).doubleValue();
double exp = eval(right).doubleValue();
return Math.pow(base, exp);
}
return (Number) engine.eval(expression);
}
}
输出:
729.0
729.0
16.0