我有這個解決二次方程的程序,但每當我嘗試在給定係數後輸出方程時,我需要以ax^2 +/- bx +/c的形式打印。我怎樣才能讓我的方程打印出數字的符號作爲「+/-」?給出其係數打印出二次方程。
package quadraticsolver;
import java.util.Scanner;
/**
*
* @author Trevor
*/
public class QuadraticSolver
{
public static void main(String[] args)
{
Scanner a = new Scanner(System.in);
Scanner b = new Scanner(System.in);
Scanner c = new Scanner(System.in);
float qCoeff, lCoeff, constant, discriminant, x1, x2, x3, x4;
System.out.print("Enter the coefficient of the quadratic term -> ");
qCoeff = a.nextFloat();
System.out.print("Enter the coefficient of the linear term -> ");
lCoeff = b.nextFloat();
System.out.print("Enter the constant term -> ");
constant = c.nextFloat();
discriminant = (float) (Math.pow(lCoeff,2) - (4*qCoeff*constant));
if (qCoeff == 0)
{
System.out.println("The equation must have a non-zero quadratic term.");
}
else if (discriminant == 0)
{
x1 = (float) (-1*lCoeff)/(2*qCoeff);
System.out.printf("Equation: %.5fx^2+%.5fx+ %.5f = 0.00000%n", qCoeff, lCoeff, constant);
System.out.printf("Solution: x={%.5f}", x1);
}
else if (discriminant > 0)
{
x1 = (float) ((-1*lCoeff+Math.sqrt(discriminant))/(2*qCoeff));
x2 = (float) ((-1*lCoeff-Math.sqrt(discriminant))/(2*qCoeff));
System.out.printf("Equation: %.5fx^2 + %.5fx + %.5f = 0.00000%n", qCoeff, lCoeff, constant);
System.out.printf("Solution: x={%.5f, %.5f%n}", x1, x2);
}
else if (discriminant <0)
{
x1 = (float) (-1*lCoeff)/(2*qCoeff);
x2 = (float) Math.abs(Math.sqrt((Math.abs(discriminant)))/(2*qCoeff));
x3 = (float) (-1*lCoeff)/(2*qCoeff);
x4 = (float) Math.abs(Math.sqrt((Math.abs(discriminant))/(2*qCoeff)));
System.out.printf("Equation: %.5fx^2+%.5fx+%.5f = 0.00000%n", qCoeff, lCoeff, constant);
System.out.printf("Solution: x={%.5f+%.5fi, %.5f-%.5fi}", x1, x2, x3, x4);
}
else
System.out.println("Invalid type. Please input a number");
}
}
咦事實證明,我使用的例子方程('x^2 - 2x + 3 = 0')沒有實值解。 – Sizik