在ArrayList表格中打印用户定义的输入内容。

9 浏览
0 Comments

在ArrayList表格中打印用户定义的输入内容。

我在Eclipse中编写了这个Java接口程序,但是在MyTriangle tmp = new MyTriangle();下面有一条红线,当我运行程序时,会出现以下错误:\n

\n无法访问Question1的封闭实例。必须使用Question1的封闭实例来限定分配(例如,在Question1的一个实例x上使用x.new A())。\n

\n

public static void main(String[] args) 
{   
    MyTriangle tmp = new MyTriangle();
    tmp.getSides();
    System.out.println();
    System.out.println("三角形的面积为" + tmp.computeArea());
}
interface Triangle
{
    public void triangle();
    public void iniTriangle(int side1, int side2, int side3);
    public void setSides(int side1, int side2, int side3);
    public void getSides();
    public String typeOfTriangle(); 
    public double computeArea();            
}
class MyTriangle implements Triangle
{
    private int side1,side2,side3;
    public void triangle()
    {
        this.side1 = 3;
        this.side2 = 4;
        this.side3 = 5;
    } 
}

0
0 Comments

问题的出现原因是代码中创建MyTriangle对象时的错误。解决方法是根据给出的修复代码创建MyTriangle对象。

文章内容如下:

尝试这个。为了简化,移除了一些方法。

public class Test1 {     
    public static void main( String [] args) 
    { 
        MyTriangle h1 = new MyTriangle();     
    } 
} 
class MyTriangle implements Triangle{
    int side1;
    int side2;
    int side3;
    public MyTriangle(){
        this.side1 = 1;
        this.side2 = 2;
        this.side3 = 3;
    }
}
interface Triangle{}

你没有粘贴完整的代码,我假设你的代码应该类似于下面的样子。然后你需要在创建Triangle实例之前创建主类的实例,如下所示。

public class Test{
    class MyTriangle 
    {
        int side1,side2,side3;
        public MyTriangle()
        {
            this.side1 = 3;
            this.side2 = 4;
            this.side3 = 5;
        } 
    }
    public static void main(String[] args) 
    {   
        MyTriangle h1 = new Test(). new MyTriangle();   // Fix is here**   
    }
}
interface Triangle{}

非常感谢。这就是我所需要的:MyTriangle tmp = new Question1().new MyTriangle();

0
0 Comments

问题的原因是MyTriangle是一个非静态内部类。这意味着,像所有其他实例成员一样,它(及其实例)属于外部类的一个实例,而不是类本身。要属于一个类,事物需要被定义为static

因此,你需要提供一个外部类实例来实例化内部类,如下所示:new OuterClass().new MyTriangle();

如果你将内部类标记为static,这将使它成为一个嵌套类,它允许你在静态上下文中引用它,比如一个公共静态的main()方法。

解决方法是提供一个外部类的实例来实例化内部类,或者将内部类标记为static,使其成为一个嵌套类。

0