在一个类中定义一个方法: 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-28 12:47:26 浏览: 14
下面是代码实现(其中包括了对根的判断和输出):
```java
import java.util.Scanner;
public class QuadraticEquation {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一元二次方程的系数a:");
double a = scanner.nextDouble();
System.out.print("请输入一元二次方程的系数b:");
double b = scanner.nextDouble();
System.out.print("请输入一元二次方程的系数c:");
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[] roots = new double[2];
roots[0] = (-b + Math.sqrt(delta)) / (2 * a);
roots[1] = (-b - Math.sqrt(delta)) / (2 * a);
return roots;
}
}
```
运行结果如下:
```
请输入一元二次方程的系数a:1
请输入一元二次方程的系数b:-3
请输入一元二次方程的系数c:2
方程的两个根为:2.0 和 1.0
```
```
请输入一元二次方程的系数a:0
请输入一元二次方程的系数b:-3
请输入一元二次方程的系数c:2
a不能为0
```
```
请输入一元二次方程的系数a:1
请输入一元二次方程的系数b:2
请输入一元二次方程的系数c:3
b2-4ac不能小于0
```