• Test_1 一元二次方程用例测试以及测试用例


    1. 代码实现

    package com.source;

    class Equation {

    private double a;

    private double b;

    private static double c;

    Equation(){//无参构造

    a = 0;

    b = 0;

    c = 0;

    }

    Equation(double a,double b,double c){//有参构造

    this.a = a;

    this.b = b;

    this.c = c;

    }

    public void setA(double a) {

    this.a = a;

    }

    public double getA() {

    return a;

    }

    public void setB(double b) {

    this.b = b;

    }

    public double getB() {

    return b;

    }

    public void setC(double c) {

    this.c = c;

    }

    public double getC() {

    return c;

    }

    public double getDlt() {//判别式

    double result = Math.pow(b, 2)-4*a*c;

    return result;

    }

    private double getRightRoot() {//求解右侧较大实根的方法

    double rightRoot  = 0;

    rightRoot = (-b+Math.sqrt(getDlt()))/(2*a);

    return rightRoot;

    }

    private double getLeftRoot() {//求解左侧较小实根的方法

    double LeftRoot  = 0;

    LeftRoot = (-b-Math.sqrt(getDlt()))/(2*a);

    return LeftRoot;

    }

    public void getRoot() //显示实根或复根,求解

    {

    if(a == 0)

    {

    if(b==0)

    {

    if(c==0)

    {//全为0无穷多解

    System.out.println("一元二次方程:"+getA()+"x^2+"+getB()+"x+"+getC()+"有无穷多解");

    }

    else

    {

    System.out.println("一元二次方程:"+getA()+"x^2+"+getB()+"x+"+getC()+"无解");

    }

    }

    else

    {

    double result = 0;

        result = -getC()/getB();

    System.out.println("一元二次方程:"+getA()+"x^2+"+getB()+"x+"+getC()+"唯一解");

    }

    }//二次系数不为0,两个实根或复根

    else

    {

    if(getDlt() == 0)//判别式为0,有两个相等值

    {

    double result = 0;

    result = -getB()/(2*getA());

    System.out.println("一元二次方程:"+getA()+"x^2+"+getB()+"x+"+getC()+"唯一解"+result);

    }

    else if(getDlt()>0)//两个相异实根

    {

    System.out.println("一元二次方程:"+getA()+"x^2+"+getB()+"x+"+getC()+"有两个实根:"+

    getLeftRoot()+"和"+getRightRoot());

    }

    else//判别式小于0,有两个复根

    {

    double imaginaryNumber = 0;

    double realNumber = 0;

    imaginaryNumber = Math.sqrt(-getDlt())/(2*a);

    realNumber = -getB()/(2*a);

    System.out.println("一元二次方程:"+getA()+"x^2+"+getB()+"x+"+getC()+"两个复根:"+

    realNumber+"i"+"和"+imaginaryNumber+"i");

    }

    }

    }

    public static class Test1{

    public static void main(String[] args) {

    System.out.print("1---");

    Equation e1 = new Equation(0,0,0);

    e1.getRoot();

    System.out.print("2---");

    Equation e2 = new Equation(0,0,1);

    e2.getRoot();            

    System.out.print("3---");

    Equation e3 = new Equation(0,1,0);

    e3.getRoot();

    System.out.print("4---");

    Equation e4 = new Equation(0,1,1);

    e4.getRoot();

    System.out.print("5---");

    Equation e5 = new Equation(1,2,1);

    e5.getRoot();

    System.out.print("6---");

    Equation e6 = new Equation(1,4,1);

    e6.getRoot();

    System.out.print("7---");

    Equation e7 = new Equation(2,3,3);

    e7.getRoot();

    }

    }

    1. 测试驱动

    public static class Test1{

    public static void main(String[] args) {

    System.out.print("1---");

    Equation e1 = new Equation(0,0,0);

    e1.getRoot();

    System.out.print("2---");

    Equation e2 = new Equation(0,0,1);

    e2.getRoot();            

    System.out.print("3---");

    Equation e3 = new Equation(0,1,0);

    e3.getRoot();

    System.out.print("4---");

    Equation e4 = new Equation(0,1,1);

    e4.getRoot();

    System.out.print("5---");

    Equation e5 = new Equation(1,2,1);

    e5.getRoot();

    System.out.print("6---");

    Equation e6 = new Equation(1,4,1);

    e6.getRoot();

    System.out.print("7---");

    Equation e7 = new Equation(2,3,3);

    e7.getRoot();

    }

    }

    1. bug生成过程

    原先的代码是

    你生成的错误的bug是分别为:在期望结果是带根号时,实际结果则会转换成小数,无法精确的到数值。

    测试用例:

    序号

    (a,b,c)

    期望结果

    实际结果

    1

    (0,0,0)

    无穷解

    无穷解

    2

    (0,0,1)

    无解

    无解

    3

    (0,1,0)

    唯一解

    X=0

    唯一解

    X=0.0

    4

    (0,1,1)

    唯一解

    X=-1

    唯一解

    X=-1.0

    5

    (1,2,1)Dlt=0

    唯一解

    X = -1

    唯一解

    X = -1

    6

    (1,4,1)

    Dlt > 0

    两个实根

    X1=-2-

    X2=-2+

    两个实根

    X1=-3.732050807568877

    X2=-0.2679491924311228 

    7

    (2,3,3)

    Dlt < 0

    两个复根

    X1=-0.75i

    X2=

    两个复根

    X1=-0.75i

    X2=0.9682458365518543i

    4.结果截图

     

  • 相关阅读:
    Js获取当前日期时间及其它操作
    c# 扩展方法奇思妙用
    SQL、LINQ、Lambda 三种用法(转)
    jquery的$.extend和$.fn.extend作用及区别.txt
    asp.net中virtual和abstract的区别
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句.txt
    顺序结构的数据链表,仍旧薄弱(照着大了一边)
    verilog的移位运算符(存在不公平现象)
    在强制类型转话的时候,本来是不对的,但是加上引用符号后就变得正确,为什么?(未解决)
    c语言中的结构体
  • 原文地址:https://www.cnblogs.com/hycc/p/12977311.html
Copyright © 2020-2023  润新知