我不確定我在做什麼錯在我的代碼中,但我無法讓它正常運行......測試者不斷返回NaN而不是預期的結果。本練習的目標是打印二次方程的所有實數解。 solution1應返回較小的解決方案,而solution2應返回較小的解決方案。這是我的班。二次方程式程序 - 得到NaN錯誤
public class QuadraticEquation
{
private int a;
private int b;
private int c;
private boolean hasSolutions;
private double discriminant = (b * b) - (4 * a * c);
private double solution1;
private double solution2;
/**
* Constructs a quadratic equation
* @param a coefficient a
* @param b coefficient b
* @param c coefficient c
*/
public QuadraticEquation(int a, int b, int c)
{
a = a;
b = b;
c = c;
}
/**
* Checks if there is a solution
* @return true if there is a real solution
*/
public boolean hasSolutions()
{
if(discriminant < 0)
hasSolutions = false;
else
hasSolutions = true;
return hasSolutions;
}
/**
* Returns first solution
* @return first solution
*/
public double getSolution1()
{
if(hasSolutions)
{
if((-b + Math.sqrt(discriminant)/(2 * a)) < (-b - Math.sqrt(discriminant)/(2 * a)))
solution1 = (-b + Math.sqrt(discriminant)/(2 * a));
else
solution1 = (-b - Math.sqrt(discriminant)/(2 * a));
}
return solution1;
}
/**
* Returns second solution
* @return second solution
*/
public double getSolution2()
{
if(hasSolutions)
{
if((-b + Math.sqrt(discriminant)/(2 * a)) > (-b - Math.sqrt(discriminant)/(2 * a)))
solution2 = (-b + Math.sqrt(discriminant)/(2 * a));
else
solution2 = (-b - Math.sqrt(discriminant)/(2 * a));
}
return solution2;
}
}
這裏是我的測試:
public class QuadraticEquationTester
{
public static void main(String[] args)
{
QuadraticEquation equation = new QuadraticEquation(2, 2, -4);
System.out.println(equation.hasSolutions());
System.out.println("Expected: true");
System.out.println(equation.getSolution1());
System.out.println("Expected: -2");
System.out.println(equation.getSolution2());
System.out.println("Expected: 1");
QuadraticEquation equation2 = new QuadraticEquation(2, 2, 4);
System.out.println("\n" + equation2.hasSolutions());
System.out.println("Expected: false");
System.out.println(equation2.getSolution1());
System.out.println("Expected: 0");
System.out.println(equation2.getSolution2());
System.out.println("Expected: 0");
}
}
太謝謝你了! :)
它爲'hasSolutions()'輸出'true'嗎? –
是的,但它應該返回false。 :( – user3001948