我有两个需要在java中评估的方程
y=(x+1)*2-3
y=5
这些方程本质上是动态的
y= x*8x6-5*5
y= 3
y
在这些等式中已知,我需要确定x
用java编写程序的最佳和最简单的方法是什么?
答案 0 :(得分:1)
似乎有几种方法可以解决这个问题。我的第一个想法(一如既往是过于复杂,最有可能不值得做,除了有趣),是使用创建语法来解析操作的顺序,可以评估变量与常量等的事情。然后以编程方式解决方程。然而,这并非易事。如果这是一个编译器类,这可能值得一看,否则忽略它。
我的第二个念头就是使用蛮力。虽然您需要弄清楚如何处理x的负值。
public int solve(int y){
int x=0;
while(y>(x+1)*2-3)
x++;
}
答案 1 :(得分:0)
几年后,希望这对某人有帮助,使它变得更简单,我将使用库exp4j(https://www.objecthunter.net/exp4j/)和IDE netbeans 8.2(https://netbeans.org/)。 Create a frame like this
稍后在按钮上添加代码:
try {
net.objecthunter.exp4j.Expression e = new ExpressionBuilder(txtFunc.getText())
.variables("x")
.build()
.setVariable("x", Double.parseDouble(txtVar.getText()));
double result = e.evaluate();
txtRes.setText("" + result);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Revisa la función o la variable, Posibles errores de operación: División entre 0");
}
注意:这是为了评估“ x”
因此,具体地讲,这样做将有点复杂,因此我们将做一些数学运算,如果所求函数的值是5,则我们将“ x”的值隔离出来。 x =(y + 1)/ 2,然后重新评估,x =(5 + 1)/ 2 = 3,x = 3,并通过代码验证这实际上是答案。
Comprobation
其他功能也有相同之处。 (对不起我的技术英语)
答案 2 :(得分:-1)
如果通过说方程是“动态的”,我们推断你正在尝试构建一个程序来解决任意代数方程(或方程组)中的x,这远远超出本论坛的范围。有完整的软件包旨在做这样的事情。