2

首先让我说,我对编程和这个网站都是新手。这是我第一次来这里,这是我的第二个编程项目!:)

我在编译时在底部遇到一些错误,在 - x2 上出现红色框,并且可能也会在 - y2 上。错误是意外类型。

基本上做一个项目来获得点的差异,这还没有完成,但我不知道如何解决编译错误。起初,我尝试添加用于存储 x2 和 y2 的字段,但这确实解决了这个错误,只是给了我另一个(我删除了,因为我不打算添加更多字段)。最后我觉得我需要return math.sqrt(double x3) + math.sqrt(double y3)

任何建议表示赞赏,我正在使用 bluejay。我相信这对你们中的一些人来说可能看起来很容易大师记住我是新手!:)

public class Point {
    //fields holding info for x,y
    private double x;
    private double y;

    //default constructor, set to 0.0
    public Point()  {
        x = 0.0;
        y = 0.0;
    }

    //constructor that user can set field values
    public Point (double x, double y) {
            this.x = x;
            this.y = y;
    }

    //This is optional. return value of x
    public double getx () {
        return x;
    }

    //This is optional. return value of y
    public double gety () {
        return y;
    }

    //take new parameter find distance between field parameter and new parameter 
    public double distanceTo (double x2, double y2) {
        x - x2 = x3;
        y - y2 = y3;
    }
}
4

3 回答 3

5

在 Java(和大多数编程语言)中,您不应该认为自己在编写方程式而是在编写指令:

= 基本上意味着让左边的“东西”变成右边的“东西”,或者用 StormeHawke 的话来说

Java 和大多数其他编程语言中的 = 运算符不应在心理上被理解为“等于”,而是“被定义为”

所以

x3= x - x2;

是有效的,因为您可以将 x3 更改为 x - x2,但是

x - x2 = x3;

无效,因为您要更改左侧的哪个内容:x、x2 或两者都更改?

这意味着以下是完全合理的写法;

x=x+1;

作为一个方程,这是没有意义的,但作为一个指令,它是完全有意义的,它的“使 x 等于 x 现在加 1”

其他问题

  • 解决这个问题后你还会发现它distanceTo()被定义为返回一个 double 但没有,你需要返回一些“答案”或将其返回更改为 void
  • x3 也没有被定义为“存在”任何东西,它需要在使用之前/使用时声明,可以假定为双精度
于 2013-10-15T20:16:53.733 回答
1

x - x2 = x3;在 Java 中是不正确的语法,您的distanceTo()方法应该返回 adouble但您不返回任何内容。

于 2013-10-15T20:15:47.823 回答
1

您收到类预期错误,因为编译器不知道 x3 和 y3 是什么。您必须首先声明它们:double x3;才能使用它们。但是,您的distanceTo方法实现也应该更改。

于 2013-10-15T20:24:30.550 回答