经过一些研究,我无法弄清楚如何创建 obj1 距离以便能够与 obj2 进行比较。所有这些方法都是在我的评估中给出的,没有机会改变它的逻辑。我想根据数据返回 3 个字符串答案。非常感谢你们。我附上了一张图片。
public class Main {
public static void main(String[] args) {
Distance dist1 = new DistanceImplementation();
Distance obj2 = new DistanceImplementation();
dist1.setFeetAndInches(1, 8);
obj2.setFeetAndInches(3, 5);
System.out.println(dist1.getDistanceComparison(obj2));
}
}
public abstract class Distance {
protected int feet;
protected float inches;
abstract public void setFeetAndInches(int feet, float inches);
abstract public int getFeet();
abstract public float getInches();
abstract String getDistanceComparison(Distance dist2);
}
class DistanceImplementation extends Distance {
@Override
public void setFeetAndInches(int feet, float inches) {
this.feet = feet;
this.inches = inches;
}
@Override
public int getFeet() {
return this.feet;
}
@Override
public float getInches() {
return this.inches;
}
@Override
String getDistanceComparison(Distance dist2) {
// if (dist2) { ????????????
return null;
}
}
最佳答案
好吧,看完评估后,我认为您可以放心地假设 1 英尺 = 12 英寸
。因此,为了正确实现 getDistanceComparison
方法,您可以计算当前对象和参数的总距离英寸,比较然后返回相应的字符串值。
假设您有以下方法:
private float getTotalInches() {
return (float) feet * 12.0 + inches;
}
此方法返回此 DistanceImplementation
实例的总英寸数,同时考虑了 feet
和 inches
属性。
请注意,为了使总结果为float
类型,我们需要先将 feet
属性转换为float
,这样它实际上变成了 float
类型。然后,我们乘以 12.0
(注意 .0
,这很重要,因为它表明 12.0
文字值也是一个 float
)。然后,我们将两个 float
值相加,产生 float
类型的结果。虽然所有这些转换和转换并不总是必要的(有时编译器足够聪明,可以猜测正确的类型并保持小数精度),但最好的做法是让您的意图非常清晰,以便将来维护您的代码的开发人员知道您已尝试完成什么。
然后,一旦有了这个方法,就可以很容易地比较两个 DistanceImplementation
实例的总英寸数并返回相应的字符串:
@Override
String getDistanceComparison(Distance dist2) {
float myTotalInches = getTotalInches();
float otherTotalInches = dist2.getTotalInches();
if (myTotalInches > otherTotalInches) {
// return ...
} else if (myTotalInches < otherTotalInches) {
// return ...
} else {
// return ...
}
}
关于java - 使用方法比较两个对象之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47252329/