爲什麼要寫出 在控制檯中的根是NaN和NaN? 我讀過有關NaN的,但我沒有找到合適的解決方案,我怎麼能修復的錯誤...... 我已經試過鑄造翻番的判別和根但不工作。 有人可以幫助我,我需要重寫什麼?爲什麼二次方程的根結果是NaN? (Java)
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
Pattern newlineOrSpace = Pattern.compile(System
.getProperty("line.separator")
+ "|\\s");
sc.useDelimiter(newlineOrSpace);
System.out.print("Enter a, b, c: ");
double a = sc.nextDouble();
double b = sc.nextDouble();
double c = sc.nextDouble();
// System.out.format("a = %f, b = %f, c = %f", a, b, c);
double root1;
double root2;
double discriminant;
discriminant = Math.sqrt(b * b - 4 * a * c);
if (discriminant > 0) {
System.out.println("There are no real roots ");
} else {
root1 = (-b + discriminant)/(2 * a);
root2 = (-b - discriminant)/(2 * a);
System.out.println("The roots are " + root1 + " and " + root2);
}
我會肢體出去,猜測'a'很小,甚至可能爲零。你想在這種情況下做什麼功能? – Beta
你給什麼輸入? – geoffspear
由於Hammar推斷,但沒有明確說明,判別式D由D = b^2 - 4ac給出。 Upi ...更多信息在http://en.wikipedia.org/wiki/Discriminant – andand