我有两个需要在 java 中计算的方程
y=(x+1)*2-3
y=5
这些方程本质上是动态的
y= x*8x6-5*5
y= 3
y
在这些方程中是已知的,我需要确定x
用java编写程序的最好和最简单的方法是什么?
似乎有几种方法可以解决这个问题。我的第一个想法(一如既往地过于复杂,除了好玩之外很可能不值得做),是使用创建语法来解析操作顺序,可以评估为变量与常量的事物等。然后以编程方式解决方程。然而,这并不是一件容易的事情。如果这是针对编译器类的,则可能值得一看,否则请忽略它。
我的第二个想法是使用蛮力。尽管您需要弄清楚如何处理 x 的负值。
public int solve(int y){
int x=0;
while(y>(x+1)*2-3)
x++;
}
几年后,希望这对某人有所帮助,为了使这更简单,我将使用库 exp4j ( https://www.objecthunter.net/exp4j/ ) 和 IDE netbeans 8.2 ( https://netbeans.org/ ) . 像这样创建一个框架
稍后在按钮上添加代码:
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 并使用代码验证这实际上是答案。
责备
其他功能也是如此。(对不起我的技术英语)
如果说方程是“动态的”,我们是在推断您正在尝试构建一个程序来求解任意代数方程(或方程组)中的 x,这远远超出了本论坛的范围。有整个软件包旨在做这样的事情。