2016-04-15 4 views
1

Мне нужна помощь с программой, которую я пытаюсь создать. Это квадратичная формула уравнения, где у меня есть 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

просто дружеский совет, вы можете хотите прочитать эту страницу: [Руководство по заданию] (https://stackoverflow.com/help/how-to-ask), чтобы вы всегда могли быть уверены, что ваши вопросы легко подотчетны и как можно более ясны , Обязательно включите все усилия, которые вы предприняли для устранения проблемы, с которой вы столкнулись, и что произошло при попытке этих исправлений. Также не забывайте свой код и любые сообщения об ошибках! –

+1

Что вы подразумеваете под «в чем проблема»? Я не вижу никаких проблем. – ajb

+0

Мы не знаем, что искать. Никто не собирается принимать этот код, компилировать его на своем собственном компьютере, делать примерные тестовые примеры, сравнивать результат с тем, каким должен быть результат, а затем сообщать, обнаруживают ли они какую-либо ошибку. Они *** будут, однако, искать любые ошибки, если вы сообщите им, что происходит не так. Расскажите нам, что происходит, и что должно произойти. Вы получаете какие-либо ошибки? Etc ... –

ответ

0

Здесь вы пытаетесь создать экземпляр внутреннего класса, который является классом квадратного уравнения. Квадратное уравнение класс лежит внутри TestQuadraticEquation так, чтобы создать экземпляр вы можете либо объявить квадратное уравнение как статический класс, пожалуйста, обратитесь к ссылке: 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

Смежные вопросы