-3

二次方程式doubleを計算するためにの累乗を計算しようとしています

コードは次のとおりです。

private Scanner sc;
double a, b, c;
// Input Coefficients
public void InputCoeff() {
    sc = new Scanner(System.in);

    System.out.println("Please enter the coefficients of this quadratic equation.");
    System.out.println("'ax2 + bx + c = 0'");
    System.out.print("a = ");
    a = sc.nextDouble();
    if(a == 0){
        System.out.println("Coefficient of x2 ('a') can't be zero.");
        System.out.println("Otherwise, it'll be a linear funciton.");
    }
    System.out.print("b = ");
    b = sc.nextDouble();
    System.out.print("c = ");
    c = sc.nextDouble();
}

public void SqRt(double x, double y, double z) {
    double sqrt;
    sqrt = pow(y, 2) - (4 * x * z); // This generates an error
    System.out.println();
}

なぜこのエラーですか?

ありがとう。

4

3 に答える 3

4

に変更powMath.powます。Mathクラスはクラスstaticであり、クラス自体からメソッドを取得する必要があります。

于 2012-11-04T06:21:48.067 に答える
1

はクラスのメソッドであるためMath.、関数のプレフィックスとして使用します。powpow(double a, double b)staticjava.lang.Math

public void SqRt(double x, double y, double z) {
    double sqrt;
    sqrt = Math.pow(y, 2) - (4 * x * z); // This generates an error
    System.out.println(sqrt);
}

また、このメソッドから戻りたいと思うかもしれないsqrtので、returnタイプをからvoidに変更doubleし、最後に以下のようにreturnステートメントを追加します。

public dobule SqRt(double x, double y, double z) {
    double sqrt;
    sqrt = Math.pow(y, 2) - (4 * x * z); // This generates an error
    System.out.println(sqrt);
        return sqrt;
}
于 2012-11-04T06:22:37.317 に答える
1

Math.powは、使用するのに比較的費用のかかる操作であり、多くの場合、入力に時間がかかるため、可能であれば回避します。それははるかに簡単です(そしてあなたとコンピュータにとってより速いです)x * x

public static Set<Double> solve(double a, double b, double c) {
    Set<Double> solutions = new TreeSet<Double>();
    double discriminant = b * b - 4 * a * c;
    solutions.add((-b - Math.sqrt(discriminant)) / (2 * a));
    solutions.add((-b + Math.sqrt(discriminant)) / (2 * a));
    solutions.remove(Double.NaN);
    return solutions;
}

public static void main(String... args) {
    System.out.println(solve(1, 3, 2));
    System.out.println(solve(1, 0, -1));
    System.out.println(solve(1, 4, 4));
    System.out.println(solve(1, 0, 1));
}

プリント

[-2.0, -1.0]
[-1.0, 1.0]
[-2.0]
[]

実際の解決策は1つも、1つも、2つもないことに注意してください。

于 2012-11-04T08:43:10.527 に答える