繁体   English   中英

如何将 2 个对象与 1 个参数进行比较?

[英]How do I compare 2 objects with 1 parameter?

我做了一个 java 程序,比较两个物体之间的距离

当我用 2 个参数制作 class 并将这些与下面的公式进行比较时,我设法弄清楚了如何解决它;

public class RasterServices {

public static double distance (SimpleRasterElement a, SimpleRasterElement b) {
    
    double d;
    
    d = Math.sqrt(((b.x-a.x)*(b.x-a.x)) + ((b.y-a.y)*(b.y-a.y)));

    return d;
}
public class SimpleRasterElement {
      public int id;
      public double x;
      public double y;
      public double height;
}
public class SimpleRasterElementTest {

    public static void main (String[] args)
    {
        SimpleRasterElement a, b ;  // Deklarera variabeln
        
        a = new SimpleRasterElement (); // Skapa en instans (med ’new’),
        b = new SimpleRasterElement (); 
        
        // Tilldela variablerna i ’a’ värden:
        a.id = 1;
        a.x = 6.0;
        a.y = 8.0;
        a.height = 10.5;
        
        // Tilldela variablerna i ’b’ värden:
        b.id = 1;
        b.x = 9.0;
        b.y = 12.0;
        b.height = 15.5;

        System.out.println (RasterServices.distance(a,b));
        }
}

然后我可以通过使用我的测试程序RasterServices.distance(a,b)来测试它

但是现在我想将我的变量设为私有,使用 getter 并在 RasterElement 类中创建 distance() 方法,现在我很难受。

public class RasterElementTest {

public static void main(String[] args) {
    
    RasterElement re_a = new RasterElement(1, 6.0, 8.0, 10.5);
    RasterElement re_b = new RasterElement(1, 9.0, 12.0, 15.5);
    
    double d = re_a.distance(re_b);

    System.out.println(d);

    }
}

asd

public class RasterElement {
private final int id;
private final double x;
private final double y;
private final double height;

public RasterElement (int id_nr, double x_val, double y_val, double height_val) {
    id = id_nr;
    x = x_val;
    y = y_val;
    height = height_val;
}

public int getId () {
    return id;
}

public double getX () { 
    return x;
}

public double getY () { 
    return y;
}

public double getHeight () { 
    return height;
}

public double distance (RasterElement a) {
    
    double d;
    
    d = Math.sqrt(((b.getX()-a.getX())*(b.getX()-a.getX())) + ((b.getY()-a.getY())*b.getY()-a.getY()));

    return d;
    }
}

但是在距离()中我只允许一个参数,有人可以向我解释当我在 function 中只允许一个参数时如何比较两个元素/对象吗?

(通过使用 re_a.distance(re_b); 在我的测试代码中)

谢谢,很抱歉发了这么长的帖子 B-)

(如何在 class RasterElement..中的方法距离中将 b 值放入方程中?)

b更改为this 此外,您可以消除d并直接返回。 喜欢,

public double distance (RasterElement a) {
    return Math.sqrt(((this.getX()-a.getX())*(this.getX()-a.getX()))
            + ((this.getY()-a.getY())*this.getY()-a.getY()));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM