Java 面向对象练习题 代码实现及详解(三)

/*

只要愿意学习,就一定能够学会。

                                ——列宁

*/

最近看到很多次这个题型的题,分享一下

题一:

 

题二:

 

题三:

 

虽然题目多少有点出入,但是都表达了一个意思,现在就以题一来讲解

练习题三:


3.为一元二次方程ax°+bx+c=0设计一个名为QuadraticEquation的类。这个类包括:

(1)代表三个系数的私有数据域a、b、c。

(2)一个参数为a、b和c的构造方法。

(3)a、b、c的三个getter方法。

(4)一个名为getDiscriminant()的方法返回判别式-4ac。

(5)名为getRoot1()和getRoot2()的方法返回方程的两个根。

这些方法只有在判别式为非负数时才有用,如果判别式为负数时才有用,如果判别式为负,这些方法返回0.

编写一个测试程序,提示用户输入a、b和c的值,然后显示判别式的结果。如果判别式为正数,显示两个实数根;如果判别式为0,显示一个根;否则显示“方程无根”。

分步讲解

 

目录

一、实现类外数据访问、修改

二、 写出getDiscriminant()的方法返回判别式​b*b-4ac。

三、求出两个根的方法

四、判断判别式格式并条件输出

五、编写测试类

六、完整代码


一、实现类外数据访问、修改

(1)代表三个系数的私有数据域a、b、c。

private double a,b,c;//abc三值

(2)一个参数为a、b和c的构造方法。

    public void setA(double a) {
        this.a = a;
    }
    public void setB(double b) {
        this.b = b;
    }
    public void setC(double c) {
        this.c = c;
    }

    public double getA() {
        return a;
    }
    public double getB() {
        return b;
    }
    public double getC() {
        return c;
    }

(3)a、b、c的三个getter方法。

  public double gettera() {
        return a;
    }
    public double getterb(){
        return b;
    }
    public double getterc(){
        return c;
    }

以上都是固定写法,千年不变的构造方法数据访问写法,不做解释

二、 写出getDiscriminant()的方法返回判别式-4ac。

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

三、求出两个根的方法

    public double getRootl1(){
        double  x1 =-b + Math.sqrt(b*b - 4*a*c)/( 2 * a );
        return x1;
    }
    public double getRootl2() {
        double x2 =-b- Math.sqrt(b*b - 4*a*c)/( 2 * a );
        return x2;
    }

PS:不能用无返回方法,测试类调用时System.out.print打印方法不支持void

四、判断判别式格式并条件输出

提示用户输入a、b和c的值,然后显示判别式的结果。如果判别式为正数,显示两个实数根;如果判别式为0,显示一个根;否则显示“方程无根”。

        double panbie=cs.getDiscriminant();

        System.out.println("判别式结果为:"+panbie);
        if (panbie>0){
            System.out.println(cs.getRootl1());
            System.out.println(cs.getRootl2());

        } else if (panbie==0) {
            System.out.println(cs.getRootl1());
        }else {
            System.out.println("方程无根");
        }

五、编写测试类

import java.util.Scanner;

public class QuadraticEquationCS {
    public static void main(String[] args) {
        double a=0,b=0,c=0;

        System.out.println("请输入a的值:");
         a =new Scanner(System.in).nextDouble();
        System.out.println("请输入b的值:");
        b=new Scanner(System.in).nextDouble();
        System.out.println("请输入c的值:");
        c=new Scanner(System.in).nextDouble();

        QuadraticEquation cs=new QuadraticEquation(a,b,c);//设置abc三值

        double panbie=cs.getDiscriminant();

        System.out.println("判别式结果为:"+panbie);
        if (panbie>0){
            System.out.println("x1="+cs.getRootl1());
            System.out.println("x2"+cs.getRootl2());
        } else if (panbie==0) {
            System.out.println("x="+cs.getRootl1());
        }else {
            System.out.println("方程无根");
        }
    }
}

六、完整代码

public class QuadraticEquation {
    private double a,b,c;//abc三值
    public QuadraticEquation(double a, double b, double c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }

    public double getA() {
        return a;
    }
    public double getB() {
        return b;
    }
    public double getC() {
        return c;
    }

    public double gettera() {
        return a;
    }
    public double getterb(){
        return b;
    }
    public double getterc(){
        return c;
    }
    
    public double getDiscriminant(){
        double panbie=b*b-4*a*c;
        return panbie;
    }
    public double getRootl1(){
        double  x1 =-b + Math.sqrt(b*b - 4*a*c)/( 2 * a );
        return x1;
    }
    public double getRootl2() {
        double x2 =-b- Math.sqrt(b*b - 4*a*c)/( 2 * a );
        return x2;
    }

}

往期教学直通车(点击即可)

JAVA方法构造经典例题讲解

Java 面向对象练习题 代码实现及详解(一)

Java 面向对象练习题 代码实现及详解(二)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

三天不洗头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值