[英]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
實例的總英寸,同時考慮了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 ...
}
}
這是我工作的解決方案,它也可能有用
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.