java - 一元二次方程的解题

标签 java

我需要一些关于我正在尝试创建的程序的帮助。这是一个二次方程公式,其中我有 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)));
    }
}

}

最佳答案

这里您尝试创建内部类的实例,即 QuadraticEquation 类。 QuadraticEquation 类位于 TestQuadraticEquation 内部,因此,为了创建实例,您可以将 QuadraticEquation 声明为静态类,请参阅链接:problem creating object of inner class in java

其他选择是分离 QuadraticEquation.java 类,并将 QuadraticEquation 类的代码移到那里。这样它就不再是内部类了。

另外,另一种选择就像编译器建议您创建 TestQuadraticEquation 的实例,然后从那里您可以创建 QuadraticEquation 的新对象,可以通过以下方式完成:

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

关于java - 一元二次方程的解题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36637914/

相关文章:

java - RESTful URL 似乎没有正确映射到使用 Spring MVC 的 url

java - 如何在静态函数中使用模板?

java - 处理我的应用程序中的网站页面

java - 尝试存储SQLite数据时,我的Android应用程序崩溃

Java : Operator Precedence when methods are involved

java - 为什么 javafx 应用程序无法使用 Platform.runLater 启动以及为什么会因 lambda 表达式而挂起?

java - JAXB @XmlElements,不同类型但名称相同?

java - 将 AutoIt 与 Java 应用程序一起使用

java - 如何将 session 值传递给java类

java - 在 HQL (Hibernate) 中转换 SQL 查询