虽然定义了构造函数,但在eclipse中的java中没有定义构造函数

时间:2016-01-21 08:40:58

标签: java eclipse constructor

请帮助.... 我是Java新手。我正在尝试编写一个包含类"点"的代码。进入一个公共阶层" PeterAndSnowBlower"在Eclipse(Luna)中。 我也尝试过将变量x,y公开在类"点"它给出了同样的错误。 我也在构造函数

中使用了this.x和this.y而不是x和y

这是我的代码:

import java.util.*;
public class PeterAndSnowBlower {
    class point{
        int x;
        int y;
        public point() {
            x = y = 0;
        }
        public point(int a, int b){
            x = a;
            y = b;
        }
        public point(point p) {
            x = p.x;
            y = p.y;
        }
        public double distance(point P){
            int dx = x - P.x;
            int dy = y - P.y;
            return Math.sqrt(dx*dx + dy*dy);
        }
    }
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n, x, y;
        point P = new point(0, 0);
        n = in.nextInt();
        P.x = in.nextInt();
        P.y = in.nextInt();
        Vector<point>points = new Vector<point>();
        for(int i = 0; i < n; i++){
            x = in.nextInt();
            y = in.nextInt();
            points.add(new point(x, y));
        }
        double r1, r2;
        r1 = r2 = P.distance(points.get(0));
        for(point point:points){
            r1 = Math.max(r1, P.distance(point));
        }

    }
}

错误是:

Multiple markers at this line
- No enclosing instance of type PeterAndSnowBlower is accessible. Must qualify the allocation with an enclosing instance of type PeterAndSnowBlower (e.g. 
 x.new A() where x is an instance of PeterAndSnowBlower).
- The constructor PeterAndSnowBlower.point(int, int) is undefined

2 个答案:

答案 0 :(得分:1)

除非定义了内部类static,否则无法从外部类的静态方法实例化它。 non-static类需要this引用外部类。

将此类声明为static是有意义的。显然它并不是指外层阶级。

答案 1 :(得分:1)

您正在静态访问内部类(意味着您不是从外部类的实例执行此操作)。

你需要的是一个static内部类,它在这里非常有意义,因为内部类没有引用外部类。

将声明更改为

static class point {