大家好我有这样的代码,使得功能在数学但此功能的结果是错误的OO如何在数学函数获得真正的价值
X = 0
“-3 * X^2-16 * X + 2"
代码:
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
engine.put("X", 0);
Object operation = engine.eval("-3*X^2-16*X+2");
//Object operation2 = engine.eval("(X+3)");
System.out.println("Evaluado operacion 1: " + operation);
//System.out.println("Evaluado operacion 2: " + operation2);
}
结果为2,但我得到4
Evaluado operacion 1:4
我有由
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package gustavo_santa;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import javax.swing.JOptionPane;
/**
*
* @author osmarvirux
*/
public class SerieB {
//xi and x4
int xi;
int x4;
//f(x) function variables
String positive_negative;
int num_one;
int elevation_one;
String add_subtract_one;
int num_two;
int elevation_two;
String add_subtract_two;
int num_three;
//results
String xi_result;
String x4_result;
public SerieB(int xi, int x4, String positive_negative, int num_one, int elevation_one, String add_subtract_one, int num_two, int elevation_two, String add_subtract_two, int num_three) {
this.xi = xi;
this.x4 = x4;
this.positive_negative = positive_negative;
this.num_one = num_one;
this.elevation_one = elevation_one;
this.add_subtract_one = add_subtract_one;
this.num_two = num_two;
this.elevation_two = elevation_two;
this.add_subtract_two = add_subtract_two;
this.num_three = num_three;
}
public void Procedure_xi(){
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
if (positive_negative == "-"){
try {
xi_result=(num_one*(Math.pow(xi, elevation_one)))+add_subtract_one+(num_two*(Math.pow(xi, elevation_two)))
+add_subtract_two+num_three;
Object result = engine.eval(xi_result);
System.out.println(xi_result+" = "+result);
} catch(ScriptException se) {
se.printStackTrace();
}
}else{
try {
xi_result=((-num_one*(Math.pow(xi, elevation_one)))+add_subtract_one+(num_two*(Math.pow(xi, elevation_two)))
+add_subtract_two+num_three);
Object result = engine.eval(xi_result);
System.out.println(xi_result+" = "+result);
} catch(ScriptException se) {
se.printStackTrace();
}
}
}
public void Procedure_x4(){
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
if (positive_negative == "-"){
try {
x4_result=(num_one*(Math.pow(x4, elevation_one)))+add_subtract_one+(num_two*(Math.pow(x4, elevation_two)))
+add_subtract_two+num_three;
Object result = engine.eval(x4_result);
System.out.println(x4_result+" = "+result);
} catch(ScriptException se) {
se.printStackTrace();
}
}else{
try {
x4_result=((-num_one*(Math.pow(x4, elevation_one)))+add_subtract_one+(num_two*(Math.pow(x4, elevation_two)))
+add_subtract_two+num_three);
Object result = engine.eval(x4_result);
System.out.println(x4_result+" = "+result);
} catch(ScriptException se) {
se.printStackTrace();
}
}
}
public static void main(String[] args){
//-3x^2-16x+2
SerieB obj = new SerieB(0, 1, "+", -3, 2, "-", 16, 1, "+", 2);
obj.Procedure_xi();
obj.Procedure_x4();
}
}
结果与此代码其他代码是2,但我想使用
ScriptEngineManager经理= new ScriptEngineManager(); ScriptEngineManager manager = new ScriptEngineManager();
因为是一个库,我认为更准确,我不想使用我的代码,因为有很多行,我不知道如果是100%的效率。有人可以帮助我吗?或者给我一个推荐来解决这个数学函数?非常感谢
问题是'^'的意思是按位排他,而不是取幂。但我不知道如何解决这个问题。 –
考虑在您使用JavaScript脚本引擎后向此问题添加JavaScript标记。 –
我已添加JavaScript标签bro –