2016-04-15 9 views
1

Ich brauche etwas Hilfe mit einem Programm, das ich versuche zu erstellen. Dies ist eine quadratische Formel, in der ich 2 Klassen habe.Quadratische Formel Lösung Problem

Das einzige Problem, das ich erhalte ist Code

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

ich den Fehler erhalten, die sagt:

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)  

Dieser Fehler ist in Zeile 12 (Code oben) auftritt, und ich muss Finde heraus, was mit diesem Abschnitt nicht stimmt.

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

nur eine freundliche Spitze, können Sie Möchten Sie diese Seite lesen: [Das How-To-Ask-Handbuch] (https://stackoverflow.com/help/how-to-ask), damit Sie immer sicher sein können, dass Ihre Fragen leicht zu beantworten und so klar wie möglich sind . Stellen Sie sicher, dass Sie alle Anstrengungen unternommen haben, die Sie unternommen haben, um das Problem zu beheben, das Sie haben, und was passiert ist, als Sie diese Korrekturen versuchten. Vergessen Sie auch nicht Ihren Showcode und eventuelle Fehlermeldungen! –

+1

Was meinst du mit "was ist das Problem"? Ich sehe kein Problem. – ajb

+0

Wir wissen nicht, wonach wir suchen sollen. Niemand wird diesen Code nehmen, ihn auf seinem eigenen Computer kompilieren, Beispiel-Testfälle erstellen, das Ergebnis mit dem vergleichen, was das Ergebnis sein sollte, und dann wissen lassen, ob es einen Fehler gibt. Sie werden jedoch nach Fehlern suchen, wenn Sie sie wissen lassen, was schief läuft. Erzählen Sie uns, was passiert und was passiert. Haben Sie Fehler? Etc ... –

Antwort

0

Hier können Sie versuchen, eine Instanz von innerer Klasse zu schaffen, die Quadratische Gleichung Klasse. Quadratische Gleichung Klasse liegt innerhalb TestQuadraticEquation so, um Instanz zu erstellen, können Sie entweder Ihre Quadratische Gleichung als statische Klasse deklariert entnehmen Sie bitte den Link: problem creating object of inner class in java

Andere Wahl ist die Klasse, so dass QuadraticEquation.java zu trennen und den Code von Quadratische Gleichung bewegen Klasse dort. So ist es keine innere Klasse mehr.

Auch die andere Wahl wäre, wie die Compiler Sie Instanz TestQuadraticEquation erstellen vorgeschlagen und dann von dort aus können Sie neues Objekt von Quadratische Gleichung erzeugen, die durch getan werden kann:

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

Vielen Dank für die Hilfe zu diesem Thema. Ich habe darüber nachgedacht, die QuadraticEquation-Klasse zu nehmen und sie zu trennen, aber für die Aufgabe, die ich arbeite, muss ich sie in der inneren Klasse haben. Die letzte Wahl war in der Lage zu erreichen, was ich brauchte. Vielen Dank! – KhaosProgrammer

+0

Es gibt eine andere Wahl: 'statische Klasse QuadraticEquation {...}' – ajb