簡體   English   中英

兩個對象之間的距離使用方法比較

[英]Distance between two objects using method Comparison

經過一番研究后,我無法弄清楚如何創建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 foot = 12 inches 因此,為了正確實現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 ...
    }
}

這是我工作的解決方案,它也可能有用

package com.prog;

import java.util.Scanner;

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);

}

public class DistanceCalculator {
private static final Scanner scan = new Scanner(System.in);

    public static void main(String[] args) {
        Distance dist1 = new DistanceImplementation();
        Distance dist2 = new DistanceImplementation();

        int feet1 = 1;
        float inches1 = (float) 2.0;

        int feet2 = 3;
        float inches2 = (float) 4.1;

        dist1.setFeetAndInches(feet1, inches1);
        dist2.setFeetAndInches(feet2, inches2);

        System.out.println(dist1.getDistanceComparison(dist2));
    }
}

package com.prog;

public class DistanceImplementation extends Distance {

    @Override
    public void setFeetAndInches(int feet, float inches) {
        this.feet=(int) (feet+ (inches/12));
        this.inches=inches+ (feet*12);

    }

    @Override
    public int getFeet() {

        return feet;
    }

    @Override
    public float getInches() {

        return inches;
    }

    @Override
    String getDistanceComparison(Distance dist2) {
        String ret;
        int dist1a=this.getFeet();
        System.out.println(dist1a);
        int dist2a=dist2.getFeet();
        if(dist1a > dist2a)
            return "First is greater";
        else if(dist1a < dist2a)
            return "Second is greater";
        else


    return "Both are equal";
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM