有人可以帮我解决以下问题吗?我收到错误“类型为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;
}
}
谢谢!
答案 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
类中定义的。
此外,您的方法无法用作从未实例化的x
和y
值。
当前类的标识符为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变量。