2016-04-15 17 views
1

私が作成しようとしているプログラムで助けが必要です。これは2次方程式です。2つのクラスがあります。二次式の解法問題

私は取得しています唯一の問題は、私が言うエラー取得していますコード

"QuadraticEquation Equation = new QuadraticEquation(a, b, c);" 

です:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
No enclosing instance of type TestQuadraticEquation is accessible. Must qualify the allocation with an enclosing instance of type TestQuadraticEquation (e.g. x.new A() where x is an instance of TestQuadraticEquation). 

at TestQuadraticEquation.main(TestQuadraticEquation.java:12)  

このエラーはあるが、ライン12(上記のコード)で発生し、私がする必要がありますそのセクションで何が間違っているかを調べる。

public class TestQuadraticEquation 
{ 
    public static void main (String [] args) 
{ 
    java.util.Scanner scan = new java.util.Scanner(System.in); 
    System.out.println("Please enter the coefficients a, b and c in the order: "); 
    double a = scan.nextDouble(); 
    double b = scan.nextDouble(); 
    double c = scan.nextDouble(); 

    QuadraticEquation Equation = new QuadraticEquation(a, b, c); 

    if (Equation.getDiscriminant() > 0) 
    { 
     System.out.println("The roots of the equations are " + Equation.getRoot1() 
     + " and " + Equation.getRoot2()); 
    } 
    else 
    { 
     System.out.println("The equation has no roots."); 
    } 
} 
class QuadraticEquation 
{ 
    private double a; 
    private double b; 
    private double c; 

    QuadraticEquation() 
    { 
     a = 0; 
     b = 0; 
     c = 0; 
    } 

    QuadraticEquation (double newA, double newB, double newC) 
    { 
     a = newA; 
     b = newB; 
     c = newC; 
    } 

    public double getA() 
    { 
     return a; 
    } 
    public double getB() 
    { 
     return b; 
    } 
    public double getC() 
    { 
     return c; 
    } 

    public double getDiscriminant() 
    { 
     return (Math.pow(b,2) - 4 * a * c); 
    } 

    public double getRoot1() 
    { 
     return ((-b + Math.sqrt(getDiscriminant())/(2 * a))); 
    } 

    public double getRoot2() 
    { 
     return ((-b - Math.sqrt(getDiscriminant())/(2 * a))); 
    } 
} 

}

+0

単に優しいヒントかもしれない、:コンパイラはあなたがTestQuadraticEquationのインスタンスを作成して提案し、そこからあなたがすることにより行うことができる二次方程式の新しいオブジェクトを作成することができますように

また、他に選択肢は次のようになりますこのページを読んで、[How-To-Ask Guide](https://stackoverflow.com/help/how-to-ask)を読んで、質問が簡単に答えることができるようにしてください。 。あなたが抱えている問題を修正するためにあなたがした努力と、それらの修正を試みたときに何が起こったのかを必ず含めてください。ショーコードとエラーメッセージも忘れないでください! –

+1

「問題は何ですか?」とはどういう意味ですか?私は何の問題も見ません。 – ajb

+0

私たちは何を探すべきか分からない。誰もこのコードを自分のコンピュータでコンパイルし、サンプルテストケースを作成し、その結果を結果と比較し、エラーが見つかった場合にはそのことを知らせます。彼らはあなたが何が悪くなっているのかを知らせてくれるなら、彼らは***しかし、***エラーを探します。何が起きているのか、何が起きているのかを教えてください。何かエラーがありますか?その他... –

答えて

0

ここでは、二次方程式のクラスである内部クラスのインスタンスを作成しようとしています。 problem creating object of inner class in java

他の選択肢はQuadraticEquation.javaと二次方程式のコードを移動するようなクラスを区切ることです:二次方程式のクラスには、リンクを参照してくださいインスタンスを作成するために、あなたは、静的なクラスとして、あなたの二次方程式を宣言するか、そうTestQuadraticEquation内にありますそこのクラス。そうすれば、それはもはや内部クラスではありません。

 QuadraticEquation Equation = new TestQuadraticEquation(). new QuadraticEquation(a, b, c); 
+0

ありがとうございました。私はQuadraticEquationクラスを使い、それを分離することを考えていましたが、私が働いている課題については、それを内部クラスに入れる必要があります。最後の選択は私が必要なものを達成することができました。ありがとうございました! – KhaosProgrammer

+0

別の選択肢があります: 'static class QuadraticEquation {...}' – ajb