华南农业大学Java实验5 定义类和创建对象求解一元二次方程的根

本文介绍了如何在Java中定义类QuadraticEquation来表示一元二次方程,包括数据域、构造方法、判别式计算以及实根求解。通过主类Main演示了如何输入系数并根据方程特性输出结果。

实验5 定义类和创建对象求解一元二次方程的根

一、实验目的

(1)理解对象和类,掌握用类创建对象模型。

(2)学习如何定义类和创建对象,理解对象引用变量的概念。

(3)理解构造方法的作用,并使用构造方法创建类的对象。

二、实验内容

按照如下步骤完成实验:

步骤1:创建一个Java Project,命名为:exp02

步骤2:按下列要求定义一个类表示一元二次方程

    

(1) 类名为:QuadraticEquation,放置在名exp02中;

(2) 类中定义3个double类型的数据域:a,b,c分别表示3个系数;

(3) 类中定义有参构造方法:QuadraticEquation(double n1, double n2, double n3),3个参数依次初始化系数a,b,c;

(4) 类中定义返回一元二次方程的判别式的值的方法:double getDiscriminant(),判断式如下:

    

(5) 类中定义两个求解一元二次方程两个实根的方法:double getRoot1()和double getRoot2(),分别计算2个实根:

    

步骤3:编写主类,类名为:Main,放置在名exp02中。主方法中实现如下功能:

(1) 输入一元二次方程的3个系数;

(2) 如果该方程无实根,则输出“方程没有实根”;

(3) 如果该方程有2个相等的实根,则输出“方程有2个相等的实根,是:xx.xx”;

(4) 如果该方程有2个不等的实根,则输出“方程有2个不等的实根,是:xx.xx和xx.xx”;

提交要求:包含源程序文件的JAR

源代码如下:

主函数代码:

package exp02;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
	// write your code here
        QuadraticEquation exp;
        double a , b , c ;
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一元二次方程的3个系数:");
        a = scan.nextDouble();
        b = scan.nextDouble();
        c = scan.nextDouble();
        exp = new QuadraticEquation( a , b , c );
        if( exp.getDiscriminant() < 0 )
        {
            System.out.println("方程没有实根");
        }
        else if( exp.getDiscriminant() == 0 )
        {
            System.out.println("方程有2个相等的实根,是:"+ exp.getRoot1() );
        }
        else if( exp.getDiscriminant() > 0 )
        {
            System.out.println("方程有2个不等的实根,是:"+ exp.getRoot1() + exp.getRoot2() );
        }
    }
}

QuadraticEquation类代码:

package exp02;

public class QuadraticEquation {
    double a , b , c ;

    QuadraticEquation( double n1 , double n2 , double n3 )
    {
        a = n1;
        b = n2;
        c = n3;
    }

    double getDiscriminant()
    {
        return b*b - 4*a*c;
    }

    double getRoot1()
    {
        return ( -b + Math.sqrt(getDiscriminant()) ) / ( 2*a );
    }

    double getRoot2()
    {
        return ( -b - Math.sqrt(getDiscriminant()) ) / ( 2*a );
    }
}

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YoloMari

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值