gpt4 book ai didi

java - 使用通用类/方法计算 3 点之间的距离

转载 作者:行者123 更新时间:2023-12-01 21:16:22 25 4
gpt4 key购买 nike

我应该返回从 (0,0)this 点的距离,距离方法应该返回从 this 的距离到p。我是 Java 和泛型类/方法的新手。我的距离方法有错误,但我认为我走在正确的轨道上。 CharNumber 中的方法应返回私有(private)字段 aChar 的值并将其转换为数值。

public class Point <T extends Number> {
private T x;
private T y;

public Point(T x, T y){

}

public T getX() {
return x;
}

public T getY() {
return y;
}

public double radius(){
return Math.sqrt(
Math.pow(x.doubleValue() - 0.0, 2)
+ Math.pow(y.doubleValue() - 0.0,2));
}

public double distance(Point p){
return Math.sqrt(
Math.pow(this.x.doubleValue() - p.getX(), 2)
+ Math.pow(this.y.doubleValue() - p.getY(), 2));
}

@Override
public String toString() {
return "Point{"
+ "x=" + x
+ ", y=" + y + "}";
}
}
<小时/>
public class CharNumber extends java.lang.Number {
private char aChar;

public CharNumber(char c){// FIXME: 10/10/16

}

@Override
public String toString() {
return "CharNumber{"
+ "aChar=" + aChar + "}";
}

@Override
public int intValue() {
return 0;
}

@Override
public long longValue() {
return 0;
}

@Override
public float floatValue() {
return 0;
}

@Override
public double doubleValue() {
return 0;
}
}
<小时/>

更新点类别

 public class Point <T extends Number> {
private T x;
private T y;
public Point(T x, T y){
this.x = x;
this.y = y;

}

public T getX() {
return x;
}

public T getY() {
return y;
}
public double radius(){
return Math.sqrt(Math.pow(x.doubleValue()-0.0, 2)+Math.pow(y.doubleValue()-0.0,2));
}

public double distance(Point<Number> p){
return Math.sqrt(Math.pow(this.x.doubleValue() - p.getX().doubleValue(),2)
+ Math.pow(this.y.doubleValue() - p.getY().doubleValue(),2));
}

@Override
public String toString() {
return "Point{" +
"x=" + x +
", y=" + y +
'}';
}
public static void main(String args[]){// FIXME: 10/10/16
Point<Integer> p = new Point<>(1,1);
Point<Double> p2 = new Point<>(2.5,3.4);
Point<CharNumber> p3 = new Point(5,6);


System.out.println(p);
System.out.println(p2);
System.out.println(p3);
}

}如何在主方法中调用距离和半径方法?

最佳答案

构造函数必须分配给字段。

private final T x;
private final T y;

public Point(T x, T y) {
this.x = x;
this.y = y;
}

还有

private final char aChar;

public CharNumber(char c) {
aChar = c;
}

正如评论的那样:

public <U extends Number> double distance(Point<U> p) {
return Math.sqrt(Math.pow(x.doubleValue() - p.getX().doubleValue(), 2)
+ Math.pow(y.doubleValue() - p.getY().doubleValue(), 2));
}

甚至

public <U extends Number> double distance(Point<U> p) {
return Math.hypot(x.doubleValue() - p.x.doubleValue(),
y.doubleValue() - p.y.doubleValue());
}

如果 Point 类是不可变的,无法更改其坐标,则可以将字段设为最终字段。这允许相互分配变量(共享点值)。

Point 参数也应该采用通用类型。

还有一些事情,但你知道。

关于java - 使用通用类/方法计算 3 点之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40009338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com