简单的Java代码

时间:2013-08-22 04:45:02

标签: java math quadratic

“3。编写一个方法,该方法采用三个实数a,b和c表示二次方程ax2 + bx + c的系数,并使用二次方程式确定方程ax2 + bx + c =的一个解0.使用if语句确保程序对所有数字输入都能正常工作。“


这是我的代码,但是当我输入数字时,我得到0的答案

public int quadraticEquation(int a, int b, int c)
{
    if (a <= 0 && b<=0 && c<=0){
    System.out.println("Must be a real number");
    } else if(
    (a*(x^2))+(b*x)+c==0);
    return x;
}

4 个答案:

答案 0 :(得分:5)

这里有多个问题:

  • 您对真实解决方案的检查存在缺陷。 -x^2 - 2x - 1具有所有负系数,但其解决方案是真实的。

  • 我没有看到x在任何地方声明,是否可以编译?

  • x^2 “x平方”,但“x按位XOR 2”。在进一步操作之前,您应该学习Java

  • else if此处(a*(x^2))+(b*x)+c==0);

  • 之后,你有一个迷路分号
  • 您必须非常幸运才能返回x

  • 作业要求您输入三个 真实的 数字,但您要将参数声明为int。那不好。

  • 计算解决方案的正确公式为:

    enter image description here

总而言之,你想要这样的东西:

public double solveQuadratic(double a, double b, double c)
{
    double D = b * b - 4 * a * c;
    if (D < 0)
        throw new RuntimeException(); // complex solution

    return (-b + Math.sqrt(D)) / (2 * a);
}

上面的代码未经测试,我不会说Java,只是从Google收集的东西。

修改:经过测试的here,它似乎提供了与WolframAlpha相同的解决方案。

答案 1 :(得分:0)

您需要使用二次公式来求解零,即

(-b +- sqrt(b^2 - 4ac)) / 2a

我不会为你做这个问题,但我会指出你正确的方向。您需要知道的是,您可以使用Math.sqrt()函数计算平方根。你有其他所有变量

int numerator = -b + Math.sqrt(b*b - 4*a*c);
int denominator = 2*a

int result = numerator / denominator; //(this is integer division, I hope you understand)

现在把它放到代码中。

答案 2 :(得分:0)

首先,二次方程中有两个根(x的值)。你必须找到那两个。根据{{​​1}}正面或负面,根源可以是真根或虚根。由于* x ^ 2 + b * x + c = 0的解是b*b-4*a*cx=[-b+squareroot(b^2-4*a*c)]/2*a。因此x=[-b-squareroot(b^2-4*a*c)]/2*a没有真正的价值。你应该先学习。请遵循此link

你可以做这样的事情

b^2-4*a*c<0

我不知道你为什么只想要一个解决方案。如果你真的想要一个,你可以做如下。

public static void main(String[] args) {
    Double[] result = quadraticEquation(4, 8, 1);
    if(result==null){
        System.out.println("There is no real roots for x");
    }else{
        for(Double d:result){
            System.out.println("value for x:" +d);
        }
    }

}

public static Double[] quadraticEquation(int a, int b, int c) {
    Double[] arr = new Double[2];
    if ((b*b - (4 * a * c)) < 0) {
        return null;
    } else {
        arr[0] = (-b + Math.sqrt((b*b - 4 * a * c))) / 2 * a;
        arr[1] = (-b - Math.sqrt((b*b - 4 * a * c))) / 2 * a;
    }
    return arr;
}

答案 3 :(得分:-1)

所以你要回来x。 x在哪里设置?它不在此代码中。

也许你想要的东西是:

x = (a*(x^2))+(b*x)+c;