java编写一元二次方程在一个类中定义一个方法: double[] root(double a,double b,double c) throws IllegalArgumentEcception,其功能为计算一个一元二次方程ax2+bx+c=0的根,返回值为该方程的两个根。若a为0,抛出信息为“a不能为0”的IllegalArgumentEcception异常,若b2-4ac<0, 抛出信息为“b2-4ac不能小于0”的IllegalArgumentEcception异常。 (2)在同一个类中定义主函数,从键盘读取一元二次方程的三个系数a,b,c,调用root方法,利用try…catch捕获其中的异常,并在主函数中输出方程的两个根。
时间: 2023-11-27 16:55:24 浏览: 27
下面是该类的代码实现:
```java
import java.util.Scanner;
public class QuadraticEquation {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一元二次方程的三个系数:");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
try {
double[] roots = root(a, b, c);
System.out.println("方程的两个根分别为:" + roots[0] + "和" + roots[1]);
} catch (IllegalArgumentException | ArithmeticException e) {
System.out.println(e.getMessage());
}
}
public static double[] root(double a, double b, double c) throws IllegalArgumentException, ArithmeticException {
if (a == 0) {
throw new IllegalArgumentException("a不能为0");
}
double delta = b * b - 4 * a * c;
if (delta < 0) {
throw new ArithmeticException("b2-4ac不能小于0");
}
double x1 = (-b + Math.sqrt(delta)) / (2 * a);
double x2 = (-b - Math.sqrt(delta)) / (2 * a);
double[] roots = {x1, x2};
return roots;
}
}
```
在主函数中,我们通过Scanner类从键盘读取了一元二次方程的三个系数a、b、c,并将它们作为参数调用root方法。在root方法中,我们首先判断a是否为0,如果是则抛出IllegalArgumentException异常并提示“a不能为0”,如果不是则计算方程的根,如果delta小于0则抛出ArithmeticException异常并提示“b2-4ac不能小于0”。最后我们将方程的两个根存入一个double类型的数组中并返回。在主函数中,我们使用try…catch语句捕获root方法可能抛出的异常,并在控制台输出方程的两个根或异常信息。