java - 使用方法比较两个对象之间的距离

标签 java

经过一些研究,我无法弄清楚如何创建 obj1 距离以便能够与 obj2 进行比较。所有这些方法都是在我的评估中给出的,没有机会改变它的逻辑。我想根据数据返回 3 个字符串答案。非常感谢你们。我附上了一张图片。

enter image description here

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 实例的总英寸数,同时考虑了 feetinches 属性。

请注意,为了使总结果为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/

相关文章:

java - Docker run -m 没有设置限制(JVM 为 xms 和 xmx 占用了整个主机的大小)

java - 异步任务android后返回JSON数据

java - 如何使用 aspectj-maven-plugin

java - Apache Commons Math 2.2 百分位数错误?

java - 如何获取BIRT中前10个值

java - ListView内存泄漏?

java - 如何实现将返回枚举的具体类型的方法签名?

java - 使用 Gson 从交错的 json 中提取数据的更好方法

java - 将 JMonkey 教程翻译成 JRuby

java - HashMap 新增内容 : how can I sort it?