Java求解一元二次方程详解

  今天学习了利用java求解一元二次方程。

  从面向对象的角度去解决这个问题。

  需要两个对象,即类 求根类(EqualRoots) 和 测试类(EqualRootsTest)

  类的设计

        成员方法

              求根方法(EqualRoots,public)

              输入:三个参数double a,b,c

              输出:数组(是否有根,根1,根2)

              逻辑:1. 创建一个长度为3的数组RetArray,并初始化为0

                         2. 调用getDelta()方法

                         3. 如果第二步获取的返回值小于0,返回RetArray

                         4. 如果第二步获取的返回值大于等于0,根据求根公式  求出 x1,x2

                         5. 将x1,x2放入数组RetArray,对应数组的第一个和第二个元素

              判别式方法(getDelta,private)

              输入:三个参数double a,b,c

              输出:int 取值(1,0)

              逻辑:1. 声明一个int标记 flag

                         2. 计算判别式b*b-4*a*c

                         3.判断判别式是否小于0,是则返回flag=0

                         4.返回flag

编码实现

public class EqualRoots {
    //求解delta
    private double getDeltaValue(double a, double b, double c) {
        return b*b - 4*a*c;
    }

    //
    private int getDelta(double a, double b, double c) {
        int flag = 1;
        double delta = getDeltaValue(a,b,c);
        if (delta < 0.001) {
            flag = 0;
            return flag;
        }
      return flag;
    }

    //求解根
    public double[] EqualRoots(double a, double b, double c) {
        double[] retArray = {0.0,0.0,0.0};
        int delta = getDelta(a,b,c);
        if (delta < 0) {
            return retArray;
        }
        retArray[0] = 1.0;
        retArray[1] = ((-b + Math.sqrt(getDeltaValue(a,b,c))) / (2*a));
        retArray[2] = ((-b - Math.sqrt(getDeltaValue(a,b,c))) / (2*a));
        return retArray;
    }
}
public class EqualRootsTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入第一个参数a:");
        double a = sc.nextDouble();
        System.out.print("请输入第二个参数b:");
        double b = sc.nextDouble();
        System.out.print("请输入第三个参数c:");
        double c = sc.nextDouble();
        EqualRoots er = new EqualRoots();
        double[] array = er.EqualRoots(a,b,c);
        System.out.println(Arrays.toString(array));
    }
}
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页