我對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.然後隨機雙值,NUMA,麻木,並生成NUMC是一個與A之間然後程序將判別式d計算爲雙。然後取d的平方根即r。然後程序完成計算兩個解s和S.然後程序打印這兩個解,如果判別式不小於0,並將它們截斷爲小數點後兩位。
我不是數學(或Java)的傢伙,所以我會在錯誤的地方爲您提供有關你原來的問題,但作爲一個程序員,一般來說,我強烈建議你重新考慮你的可變的命名策略。 2個變量(A,a)保持不同的值,並且僅根據情況名稱不同,這對於WTF類型反應來說是一個絕對的磁鐵,對於長期可維護性來說是一種災難(你應該寫出更復雜的程序,這是一個考慮因素)。我建議(a,b)或(a1,a2)。 – Chris 2012-03-07 03:24:40
是否有任何理由使用雙打而不是整數或長整數?浮點數更難處理,你的例子意味着你想用整數或分數打印你的解決方案。 – 2012-03-07 03:25:46