方法未定义类型

时间:2014-10-10 16:53:19

标签: java methods

有人可以帮我解决以下问题吗?我收到错误“类型为Point的方法originDistance未定义”;我该怎么做才能解决它?

public class Test {
    public static void main(String[] args) {
        Point p1 = new Point(1, 1);

        System.out.println(p1.originDistance());
    }

    int x;
    int y;

    public double originDistance() {
        double dist = Math.sqrt(x * x + y * y);
        return dist;
    }
}

谢谢!

4 个答案:

答案 0 :(得分:2)

originDistance方法不属于Point类,属于您的Test类。如果您想在您的观点上使用它,您可以进行以下更改:

  • 将其更改为静态方法
  • 接收一个点作为参数

看起来像这样:

public static double originDistance(Point point) {
    double dist = Math.sqrt(point.getX() * point.getX() + point.getY() * point.getY());
    return dist;
}

然后在您更改主要内容以调用新方法: 的System.out.println(originDistance(P1));

答案 1 :(得分:1)

我认为这就是你想要的:

public Test()
{
    Point p1 = new Point(1, 1);

    System.out.println(this.originDistance(p1.x, p1.y));
}

public static void main(String[] args) {
    new Test();
}

public double originDistance(int x, int y) {
    double dist = Math.sqrt(x * x + y * y);
    return dist;
}

您尝试从Point对象访问该方法,但实际上是在Test类中定义的。

此外,您的方法无法用作从未实例化的xy值。

当前类的标识符为this这就是我在调用originDistance之前使用关键字的原因。有些人发现它更清楚,但它也可以只调用没有前缀的方法,并且不会破坏任何约定。

答案 2 :(得分:1)

您的方法在Test类中定义,而不是在point类中定义。 您需要重命名您的类或创建一个Test实例来调用您的originDistance()方法

Test p1 = new Test(1,1);
System.out.println(p1.originDistance());

查看java trail以获得关于学习java的非常好的文档和有用的提示。

答案 3 :(得分:0)

Point p1 = new Point(1, 1);

更改为

Test p1 = new Test(1, 1);

并添加

public Test(int x, int y)
{
   this.x = x;
   this.y = y;
}

测试是你的类而不是Point因此需要更改,你需要添加一个构造函数来初始化你的x和y变量。