0

私はJavaを初めて使用します。最初のプロジェクトの1つは、電卓を作成することです。

二次方程式をプログラムしようとしました。エラーはありませんでしたが、間違った答えが返ってきました。

void quadratic() {
    if((b*b-4*a*c) < 0){
        System.out.println("The answer is imaginary.");
    }
    else {
        System.out.println(
             "The two roots x values of the quadratic function "
             + a + "x^2 + " + b + "x + " + c + " are "
             + ((-b) + (Math.sqrt((b*b)-(4*a*c))/(2*a))) + " and "
             + ((-b) - (Math.sqrt((b*b)-(4*a*c))/(2*a)))
        );
    }
}

代用a=1, b=4, c=4すると-4と-4になります。

代用a=1, b=1, c=-12すると、2.5と-4.5になります。

数学的な誤りかもしれませんが、式は正しいと思います。

4

2 に答える 2

1

いいえ、フォーラムは完全に正しくありません。あなたは間違ったことをで割ってい2*aます。

私のアドバイスは、判別計算を除外し、冗長な括弧を取り除くことです。これにより、コードを正しく取得するのが簡単になります。

void quadratic() {
    double discriminant = b*b-4*a*c;
    if(discriminant < 0) {
        System.out.println("The answer is imaginary.");
    } else {
        System.out.println(
                "The two roots x values of the quadratic function "
                + a + "x^2 + " + b + "x + " + c + " are "
                + (-b + Math.sqrt(discriminant)) / (2*a) + " and "
                + (-b - Math.sqrt(discriminant)) / (2*a)
                );
    }
}
于 2012-12-03T21:37:07.700 に答える
0

かっこがありません。

(((-b) + (Math.sqrt((b*b)-(4*a*c)))/(2*a))) + " and " + (((-b) - (Math.sqrt((b*b)-(4*a*c)))/(2*a))))

全体を 2a で割る必要があります。

于 2012-12-03T21:22:44.573 に答える