/*
只要愿意学习,就一定能够学会。
——列宁
*/
最近看到很多次这个题型的题,分享一下
题一:
题二:
题三:
虽然题目多少有点出入,但是都表达了一个意思,现在就以题一来讲解
练习题三:
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;
}
}
往期教学直通车(点击即可)