0

我有两个需要在 java 中计算的方程

y=(x+1)*2-3
y=5

这些方程本质上是动态的

y= x*8x6-5*5
y= 3

y在这些方程中是已知的,我需要确定x

用java编写程序的最好和最简单的方法是什么?

4

3 回答 3

1

似乎有几种方法可以解决这个问题。我的第一个想法(一如既往地过于复杂,除了好玩之外很可能不值得做),是使用创建语法来解析操作顺序,可以评估为变量与常量的事物等。然后以编程方式解决方程。然而,这并不是一件容易的事情。如果这是针对编译器类的,则可能值得一看,否则请忽略它。

我的第二个想法是使用蛮力。尽管您需要弄清楚如何处理 x 的负值。

public int solve(int y){
    int x=0;
    while(y>(x+1)*2-3)
        x++;
}
于 2013-03-05T15:28:38.307 回答
0

几年后,希望这对某人有所帮助,为了使这更简单,我将使用库 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 并使用代码验证这实际上是答案。
责备

其他功能也是如此。(对不起我的技术英语)

于 2018-07-05T03:15:48.017 回答
-1

如果说方程是“动态的”,我们是在推断您正在尝试构建一个程序来求解任意代数方程(或方程组)中的 x,这远远超出了本论坛的范围。有整个软件包旨在做这样的事情。

于 2013-03-05T15:29:07.300 回答