我对Java相当陌生,需要帮助编写简化二次公式的代码。现在我的程序将两个解决方案截断到小数点后两位。但我不知道如何简化判别式的平方。例如,如果判别式是 8,那么我希望程序输出 2√2。请给我提供执行此操作所需的代码吗?
package quadraticprogram;
//This imports the DecimalFormat class, Scanner class, and all other Java classes.
import java.text.DecimalFormat;
import java.util.Scanner;
import java.util.*;
public class QuadraticProgram {
public static void main(String[] args) {
int a, A;
Scanner scan = new Scanner (System.in);
System.out.println ("Use integer value, enter minimum value of a:");
a = scan.nextInt();
System.out.println ("Use integer value, enter maximum value of A:");
A = scan.nextInt();
Random generator = new Random();
// Generate random integers in the range from a to A
// and assign them to numa, numb, and numc
double numa = generator.nextInt(A - a + 1) + a;
double numb = generator.nextInt(A - a + 1) + a;
double numc = generator.nextInt(A - a + 1) + a;
System.out.println ("numa" + numa);
System.out.println ("numb" + numb);
System.out.println ("numc" + numc);
// Define d as the discriminant and take its square root
double d;
d = ((numb*numb)-(4*numa*numc));
double r = Math.sqrt(d);
// Calculate the two solutions
double s = ((-numb + r)/(2*numa));
double S = ((-numb - r)/(2*numa));
// Truncate the two solutions to two decimal places.
DecimalFormat fmt = new DecimalFormat ("0.##");
// If the discriminant is negative there are no real solutions.
if (d<0) {
System.out.println("No Real Solutions");
} else {
// Print both solutions if the discriminant is not negative
System.out.print(fmt.format(s));
System.out.println("," + fmt.format(S));
}
}
}
现在程序让用户输入一个最小整数 a 和一个最大整数 A。然后生成介于 a 和 A 之间的随机双精度值 numa、numb 和 numc。然后程序计算判别式 d 为双。然后取d的平方根,即r。然后程序完成计算两个解 s 和 S。然后程序打印两个解,如果判别式不小于 0,并将它们截断到小数点后两位。