题目3:从键盘输入a,b,c三个实数,计算方程ax^2+bx+c=0的根
公式法 计算一元二次方程 ax^2+bx+c=0 (a ≠ 0)的根:
△= b^2 - 4ac
(1)当△>0时,方程有两个不相等的实数根;
(2)当△=0时,方程有两个相等的实数根;
(3)当△<0时,方程没有实数根,方程有两个共轭虚根。
代码如下:
import java.util.Scanner;
public class GetRoots {
public static void main(String[] args) {
double a,b,c,x1,x2,temp;
double real,imaginary;
Scanner s = new Scanner(System.in);
System.out.println("分别输入一元二次方程ax^2+bx+c的系数a、b、c");
System.out.println("请输入 a :");
a = s.nextDouble();
if(a == 0) {
System.out.println("a不能等于0,请重新输入 a :");
a = s.nextDouble();
}
System.out.println("请输入 b :");
b = s.nextDouble();
System.out.println("请输入 c :");
c = s.nextDouble();
temp = b*b-4*a*c;
if(temp > 0) {
x1 = (-b + Math.sqrt(temp))/(2*a);
x2 = (-b - Math.sqrt(temp))/(2*a);
System.out.println("方程有两个不同的实数根:x1="+x1+" x2="+x2);
}
else if(temp == 0) {
x1 = -b/(2*a);
System.out.println("方程有两个相同的实数根:x1=x2="+x1);
}
else {
real = -b/(2*a); //实部
imaginary = Math.sqrt(4*a*c-b*b)/(2*a);
System.out.println("方程没有实数根,复数根为:x1="+real+"+"+imaginary+"i"+" x2="+real+"-"+imaginary+"i");
}
}
}
运行结果: