题目要求用五个get访问器,分别获取a,b,c,x1,x2的值,然后再功能初始化a,b,c,再定义print方法输出方程的根 再定义FindRoot方法求方程的根最后建立一个Test类,通过键盘读入a,b,c的值,实例化Equation类的一个对象f, 输出方程的根。
(我想请问一下我那个求方程的根是不是写错了 然后那个Test怎么写 我本来是写的 Equation e=new Equation(); 但是感觉跟题目不符)
(这个不能用Scanner 来读书 要自己赋值给a,b,c 我就是卡在这儿了不知道怎样通过键盘读入a,b,c的值)
class Equation{
private double a;
private double b;
private double c;
private double x1;
private double x2;
public double getA(){
return a;
}
public double getB(){
return b;
}
public double getC(){
return c;
}
public double gerX1(){
return x1;
}
public double getX2(){
return x2;
}
public Equation(double a,double b,double c){
this.a=a;
this.b=b;
this.c=c;
}
void print() {
System.out.println(x1);
System.out.println(x2);
}
public double FindRoot(double a,double b,double c){
return b*b - 4*a*c;
}
}
public class Test {
public static void main(String[] args) {
一个实现,供参考:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//从键盘依次读取三个浮点数到变量a,b,c
double a= sc.nextDouble();
double b = sc.nextDouble();
double c = sc.nextDouble();
Equation e = new Equation(a,b,c);//创建类,初始化一元二次方程的三个系数
e.FindRoot(); //求一元二次方程的根
}
}
class Equation{
private double a;
private double b;
private double c;
private double x1;
private double x2;
public double getA(){
return a;
}
public double getB(){
return b;
}
public double getC(){
return c;
}
public double gerX1(){
return x1;
}
public double getX2(){
return x2;
}
public Equation(double a,double b,double c){
this.a=a;
this.b=b;
this.c=c;
}
void print() {
System.out.println(x1);
System.out.println(x2);
}
/**求一元二次方程的根
* 参考资料:
* https://baijiahao.baidu.com/s?id=1722370687157957463&wfr=spider&for=pc
* http://m.chusan.com/zhongkao/66355.html
* https://blog.csdn.net/weixin_45850035/article/details/115012183
*/
public void FindRoot(){
double d = getB()*getB() - 4*getA()*getC();
//根据判别式的结果计算一元二次方程的根
if(d>0) { //有两个根
x1 = (-getB()+(Math.sqrt(d)))/(2*getA());
x2 = (-getB()-(Math.sqrt(d)))/(2*getA());
System.out.println("方程的两个根是:"+x1+","+x2+".");
}else if(d==0) { //一个根
x1=x2=(-getB())/(2*getA());
System.out.println("方程两个相同的根是:"+x1);
}else { //无根
System.out.println("方程没有根!");
}
}
}