0

求解二次方程

该程序必须有两个方法quadraticEquationRoot1(),它们将 3 doubles 作为输入,表示a, bc并返回两个根中的较大者,并将quadraticEquationRoot2()3 s 作为输入double,表示a,bc(按此顺序)并返回两个根中的较小者。

我们假设选择数字a, b,c使得平方根永远不是负数的平方根

到目前为止,我已经写下了以下内容。我不确定如何介绍第二种方法

public class MathUtilities
{
    public static void main(String[] args)
    {
        //Note that the inputs are now declared as doubles.
        public static double quadraticEquationRoot1(double a, double b, double c)(){  
            double root1, root2; //This is now a double, too.
            root1 = (-b + Math.sqrt(Math.pow(b, 2) - 4*a*c)) / (2*a);
            root2 = (-b - Math.sqrt(Math.pow(b, 2) - 4*a*c)) / (2*a);
            return Math.max(root1, root2);  
        }

        public static double quadraticEquationRoot2(double a, double b, double c)(){
            double root1, root2; //This is now a double, too.
            root1 = (-b + Math.sqrt(Math.pow(b, 2) - 4*a*c)) / (2*a);
            root2 = (-b - Math.sqrt(Math.pow(b, 2) - 4*a*c)) / (2*a);
            return Math.min(root1, root2);  
        }
    }
4

2 回答 2

1

如果您确实需要两种方法,则第二种方法将 return Math.min(root1, root),其他一切都相同。

就个人而言,我宁愿有一种方法可以返回一个双数组 ( double[]) 或一个包含两个根的类。在没有正当理由的情况下两次执行 return 语句之前的所有工作似乎很愚蠢。

于 2013-06-03T00:10:05.590 回答
0

代码非常简单:

public static double quadraticEquationRoot1(int a, int b, int c){
    double root1 = (-b + Math.pow( b*b - 2*a*c, .5 ))/(2*a);
    double root2 = (-b - Math.pow( b*b - 2*a*c, .5 ))/(2*a);
    //we have options here, use min/max, or use if statements, for example. With ifs:
    if ( root1 > root2 ){
        return root1;
    }
    return root2;
    //otherwise: return max( root1, root2 );
}

方法方法几乎完全相同:

public static double quadraticEquationRoot2(int a, int b, int c){
    double root1 = (-b + Math.pow( b*b - 2*a*c , .5))/(2*a);
    double root2 = (-b - Math.pow( b*b - 2*a*c , .5))/(2*a);
    //we have options here, use min/max, or use if statements, for example. With ifs:
    if ( root1 < root2 ){
        return root1;
    }
    return root2;
    //otherwise: return min( root1, root2 );
}

请注意,任何一种方法都涵盖了只有一个根的情况

于 2013-06-03T00:30:20.673 回答