烦死我勒 2022-04-25 16:40 采纳率: 82.4%
浏览 111
已结题

java求一元二次方程

题目要求用五个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) {
  • 写回答

1条回答 默认 最新

  • a5156520 2022-04-25 17:22
    关注

    一个实现,供参考:

    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("方程没有根!");
            }
                
            
            
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月2日
  • 已采纳回答 5月2日
  • 修改了问题 4月25日
  • 创建了问题 4月25日

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突