7-6 求一元二次方程 (10 分)

33 篇文章 4 订阅

编程求解一元二次方程ax^2 + bx + c = 0的根,要求a、b、c从键盘输入。 要求Main类中必须有如下方法:

public static void main(String[] args);//主方法
public static int solveQuadratic(double[] eqn, double[] roots)//eqn存储输入的三个系数a、b、c,然后

将两个实数根存储进roots中,该方法返回实数根的个数。
输入格式:
从键盘输入一元二次方程的三个系数的值(均为实型数),可以用一个或多个空格或回车分隔。

输出格式:
当输入数据非法时,输出“Wrong Format”
当无实数根时,输出如下字符串“The equation has no roots”;
当只有一个根时,输出如下格式“The equation has one root: 值”;(注意,输出的值必须保留四位小数,且值前面有一个空格)
当有两个根时,输入如下格式“The equation has two roots: 值1 and 值2”;(注意,输出的值必须保留四位小数,且值前面均有一个空格)
输入样例1:
在这里给出一组输入。例如:

2 6 -554

输出样例1:
在这里给出相应的输出。例如:

The equation has two roots: 15.2108 and -18.2108

输入样例2:
在这里给出一组输入。例如:

300.0 0.0 0.00

输出样例2:
在这里给出相应的输出。例如:

The equation has one root: 0.0000
import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double[] arr=new double[3];
        int f=1;
        for (int i = 0; i < 3; i++) {
            if (sc.hasNextDouble()){
                arr[i]=sc.nextDouble();
            }else {
                f = 0;
                break;
            }
        }

        if (f==1&&arr[0]!=0){//a=0的时候,不是二次函数,应该报错数据不合法
            double[] roots=new double[2];
            int a=solveQuadratic(arr,roots);
            if (a==0){
                System.out.println("The equation has no roots");
            }else if (a==1){
                System.out.printf("The equation has one root: %.4f\n",roots[0]);
            }else if (a==2){
                System.out.printf("The equation has two roots: %.4f and %.4f\n",roots[0],roots[1]);
            }
        }else System.out.println("Wrong Format");

    }

    public static int solveQuadratic(double[] eqn, double[] roots){
        int ret=0;
        if (eqn[1]*eqn[1]-4*eqn[0]*eqn[2]>=0){
            roots[0]=(-eqn[1]+Math.sqrt(eqn[1]*eqn[1]-4*eqn[0]*eqn[2]))/(2*eqn[0]);
            roots[1]=(-eqn[1]-Math.sqrt(eqn[1]*eqn[1]-4*eqn[0]*eqn[2]))/(2*eqn[0]);
            if (Math.round(roots[0])==Math.round(roots[1])) ret=1;
            else ret=2;
        }

        return ret;
    }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 一元二次方程的一般形式为:ax²+bx+c=,其中a、b、c为实数且a≠。 一元二次方程的根,可以使用根公式: x1 = (-b + √(b²-4ac)) / 2a x2 = (-b - √(b²-4ac)) / 2a 其中,√表示开方,b²-4ac称为判别式。 当判别式大于时,方程有两个不相等的实数根; 当判别式等于时,方程有两个相等的实数根; 当判别式小于时,方程没有实数根,但有两个共轭复数根。 希望以上回答能够帮到您。 ### 回答2: 一元二次方程的一般式为ax^2 + bx + c = 0,其中a、b、c为实数,且a不等于0。解一元二次方程的根可以用根公式,即x = (-b±√(b^2-4ac))/2a。 首先,需要出方程中的系数a、b、c。如果方程已经是一般式,那么系数已知;如果方程是已知根或通过因式分解得的,可以通过设定未知数解方程来得到系数;如果方程只是一些已知条件,需要通过列方程来得到系数。 举例来说,如果方程是2x^2 - 5x + 3 = 0,那么a=2,b=-5,c=3。带入根公式,得到x = (5±√(25-24))/4 = 1或3/2。 还需要注意,如果方程中的根是复数,那么在解过程中需要涉及到复数运算。具体来说,如果b^2<4ac,那么根为虚数,可以表示为x = (-b±√(4ac-b^2)i)/2a,其中i是虚数单位。虚数部分通常用i表示,实数部分为0时通常省略i。 ### 回答3: 一元二次方程的一般形式为ax²+bx+c=0,其中a、b和c是已知实数,且a不等于0。要解这个方程的根,可以使用根公式。 根公式是: x = (-b ± √(b²-4ac)) / 2a 根据这个公式,我们可以得方程的两个根,分别为: x1 = (-b + √(b²-4ac)) / 2a x2 = (-b - √(b²-4ac)) / 2a 其中,b²-4ac被称为判别式,它可以用来判断方程的根的情况: 当b²-4ac>0时,方程有两个不相等的实数根; 当b²-4ac=0时,方程有两个相等的实数根,也称为重根; 当b²-4ac<0时,方程没有实数根,但有两个共轭复数根。 因此,在解一元二次方程的根时,需要先计算判别式,然后根据不同的情况使用不同的公式进行计算。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值