【问题标题】:Quadratic Formula solution issue二次方程解题
【发布时间】:2016-08-06 21:09:29
【问题描述】:

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

}

【问题讨论】:

  • 只是一个友好的提示,您可能需要阅读此页面:The How-To-Ask Guide,这样您就可以始终确保您的问题易于回答且尽可能清晰。请务必包括您为解决遇到的问题所做的任何努力,以及尝试这些修复时发生的情况。也不要忘记您的显示代码和任何错误消息!
  • “问题是什么”是什么意思?我没有发现任何问题。
  • 我们不知道要寻找什么。没有人会接受这段代码,在自己的计算机上编译,制作示例测试用例,将结果与应有的结果进行比较,然后如果他们发现任何错误,请告知您。但是,如果您让他们知道出了什么问题,他们查找任何错误。告诉我们正在发生的事情,以及应该发生的事情。你有任何错误吗?等等……
  • 我同意我写问题的方式。为了让事情更清楚一点,我收到错误“线程“主”java.lang.Error中的异常:未解决的编译问题:无法访问TestQuadraticEquation类型的封闭实例。必须使用TestQuadraticEquation类型的封闭实例来限定分配( egxnew A() 其中 x 是 TestQuadraticEquation 的一个实例)。在 TestQuadraticEquation.main(TestQuadraticEquation.java:12)" 错误出现在该行:QuadraticEquation Equation = new QuadraticEquation(a, b, c);跨度>
  • @KhaosProgrammer 如果你把所有更新都放到问题部分而不是评论部分会更好。因此,无需查看评论部分以进行进一步说明。保持微笑和快乐编码。

标签: java


【解决方案1】:

这里你试图创建一个内部类的实例,它是 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);

【讨论】:

  • 感谢您对此的帮助。我正在考虑参加 QuadraticEquation 课程并将其分开,但对于我正在工作的作业,我要求我将它放在内部课程中。最后一个选择能够完成我所需要的。谢谢!
  • 还有一个选择:static class QuadraticEquation { ... }
猜你喜欢
  • 2013-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多