2014-07-23 2 views
0

2 차 방정식을 해결하는 코드를 작성하고 솔루션이없는 경우 메시지를 표시합니다. 사용하는 숫자에 상관없이 프로그램을 실행할 때 항상 세 번째 if 문을 사용합니다. 해결책이없는 곳.이 이차 방정식 클래스에 문제가 있음 Java

public class Quadratic { 



private double a, b, c, x, x1, x2; 

    public Quadratic() { 
     a = b = c = 1; 
    } 

    public Quadratic(double a1, double b1, double c1) { 
     a = a1; 
     b = b1; 
     c = c1; 
    } 

    public double getA() { 
     return a; 
    } 

    public double getB() { 
     return b; 
    } 

    public double getC() { 
     return c; 
    } 

    public void setA(double a2) { 
     a = a2; 
    } 

    public void setB(double b2) { 
     b = b2; 
    } 

    public void setC(double c2) { 
     c = c2; 
    } 

    public void setQuadratic(double a3, double b3, double c3) { 
     a = a3; 
     b = b3; 
     c = c3; 
    } 

    public void roots() { 
     System.out.println(a + "x^2 + " + b + "x + " + c + " = 0"); 

     if (Math.pow(b, 2) - 4 * a * c == 0) { 
      System.out.println("Solution: (" + oneSolution() + ")"); 
     } 

     if (Math.pow(b, 2) - 4 * a * c > 0) { 
      System.out.println("Solutions: (" + solution1() + "," + solution2() + ")"); 
     } 

     if (Math.pow(b, 2) - 4 * a * c < 0) { 
      System.out.println("Solutions: There are no solutions"); 
     } 

    } 

    public double oneSolution() { 
     x = -b/2 * a; 
     return x; 
    } 

    public double solution1() { 
     x1 = (-b + (Math.sqrt(Math.pow(b, 2) - 4 * a * c)))/(2 * a); 
     return x1; 
    } 

    public double solution2() { 
     x2 = (-b - (Math.sqrt(Math.pow(b, 2) - 4 * a * c)))/(2 * a); 
     return x2; 
    } 

} 
+0

'a', b' 및'c'의 테스트 케이스 값은 무엇입니까? – rgettman

답변

0
시도가 2. 사용

또는 2.0가 아닌 2 : 2.0, 4.0 등 ... 이 나던 작품은, 2.0D 등을 시도하거나 상수를 선언하는 경우 : 두 개의 = 2.0;

어쩌면 자바 스크립트가 작동하는지 모르겠다. 더블/정수 .. 그것 때문에 아마 더 나은 당신은 더블/더블

+0

자바는 리터럴을 선언 된 변수 유형으로 변환하므로 필자는 생각하지 않습니다. – Alexey

1

코드는 내가 수업을했다 다음과 같은 한

:-) 작동하는 것 같다 수행

class Test { 
     public static void main(String[] args) { 
      Quadratic q = new Quadratic(1.0, 2.0, -35.0); 
      q.roots(); 
     } 
    } 

출력이되었다 :

1.0x^2 + 2.0x + -35.0 = 0 
Solutions: (5.0,-7.0) 

그리고 이것이 맞습니다!

관련 문제