2016-09-19 3 views
1

구문 오류 ";"줄에 "double a, b, c, discriminant, root;"가 필요합니다.오류 ";",, 변수 선언 후 예상 됨

어떻게이 오류를 해결할 수 있습니까?

public class Quadratic { 

    double a, b, c, discriminant, root; 

    discriminant = (b * b) - 4 * a * c; 

    public Quadratic(double a, double b, double c) { 
    } 

    public String calculateroots() { 

     if (discriminant >= 0){ 
      root = Math.sqrt(discriminant)/(2 * a); 

      System.out.println("Your roots are " + (-1 * b) + "+" + root + "and" + (-1 * b) + (-1 * root) +"."); 
     } 
     else { 
      root = Math.sqrt(Math.abs(discriminant))/(2 * a); 

      System.out.println("Your roots are " + (-1 * b) + "+ i" + root + "and" + (-1 * b) + "i" + (-1 * root) +"."); 
     } 
     } 
    } 
+3

해당 코드에는 몇 가지 문제가 있습니다. 다음으로 시작 : discriminant = (b * b) - 4 * a * c; 메서드 또는 초기화 블록에 있어야합니다. – Stultuske

+0

힌트 : Java 명명 규칙을 읽어보십시오. 방법 이름은 낙타로 바뀝니다! 그런 다음 java 구문에 대해 읽어보십시오. 당신은 그들이 맞는 것 같아요 진술을 넣을 수 없다 ... – GhostCat

+0

나는 생성자에서 인스턴스 변수를 설정하고 그곳에서 판별자를 해결하는 것이 좋습니다. 'public 2 차 방정식 (double a, double b, double c) {this.a = a; this.b = b; this.c = c; 판별 자 = (b * b) -4 * a * c; }' – Orin

답변

-1

여기 있습니다.

public class Quadratic { 

    double a, b, c, discriminant, root; 

    public Quadratic(double a, double b, double c) { 
     discriminant = (b * b) - 4 * a * c; 
    } 

    public void calculateroots() { 

     if (discriminant >= 0) { 
      root = Math.sqrt(discriminant)/(2 * a); 

      System.out.println("Your roots are " + (-1 * b) + "+" + root + "and" + (-1 * b) + (-1 * root) + "."); 
     } else { 
      root = Math.sqrt(Math.abs(discriminant))/(2 * a); 

      System.out.println("Your roots are " + (-1 * b) + "+ i" + root + "and" + (-1 * b) + "i" + (-1 * root) + "."); 
     } 
    } 

} 
+1

첫 번째 : 코드 만 응답이 잘못되었습니다. 둘째 :'a','b'' 및'c'도 초기화하는 것이 이치에 맞지 않다고 생각하십니까? – Tom

-1

당신의 질문에 대답 ... 구문 오류가 (a, b ,c) 초기화되지 않은 변수를 할당

discriminant = (b * b) - 4 * a * c;

판별의 위치에 의해 발생합니다. 다음 calculateroots() 전화

public class Quadratic { 

    double a, b, c, discriminant, root; 

    public Quadratic(double a, double b, double c) { 
     this.a = a; 
     this.b = b; 
     this.c = c; 
    } 

    public void calculateroots() { 

     discriminant = (b * b) - 4 * a * c; 

     if (discriminant >= 0){ 
      root = Math.sqrt(discriminant)/(2 * a); 

      System.out.println("Your roots are " + (-1 * b) + "+" + root + "and" + (-1 * b) + (-1 * root) +"."); 
     } 
     else { 
      root = Math.sqrt(Math.abs(discriminant))/(2 * a); 

      System.out.println("Your roots are " + (-1 * b) + "+ i" + root + "and" + (-1 * b) + "i" + (-1 * root) +"."); 
     } 
     } 
    } 

을이 방법으로 당신은 a, bc의 생성자에 값을 이차의 단지 인스턴스를 생성하고 제공 :

나는 calculateroots()로 이동하고 무효화하는 반환 형식을 변경 제안

+0

NO! "** discriminant는 (a, b, c) 초기화되지 않은 변수로 지정됩니다. **" – eRaisedToX

+0

NO! 왜냐하면 당신이 double myvar = a; 그것은 오류가 아닙니다. 당신이 시도하려고하는 것은 다시 질문과 같은 것입니다. 즉 변수를 재정의하려는 중입니다. 여기에는 허용되지 않습니다! – eRaisedToX

+0

포인팅하기위한 친구! 그것은 짧은 형식이었다. .. 'bcoz'! 그런 간단한 단어를 이해하기가 어려워하는 사람들을 위해 편집 – eRaisedToX

0

calculaterootsdiscriminant 초기화로 생성자의 변수 초기화에주의하십시오.

public class Quadratic { 

     double a, b, c, discriminant, root; 

     public Quadratic(double a, double b, double c) { 
      this.a = a; 
      this.b = b; 
      this.c = c; 
     } 

     public void calculateroots() { 
      discriminant = (b * b) - 4 * a * c; 

      if (discriminant >= 0){ 
       root = Math.sqrt(discriminant)/(2 * a); 

       System.out.println("Your roots are " + (-1 * b) + "+" + root + "and" + (-1 * b) + (-1 * root) +"."); 
      } 
      else { 
       root = Math.sqrt(Math.abs(discriminant))/(2 * a); 

       System.out.println("Your roots are " + (-1 * b) + "+ i" + root + "and" + (-1 * b) + "i" + (-1 * root) +"."); 
      } 

     } 
    }