经过一番研究后,我无法弄清楚如何创建obj1距离以便能够与obj2进行比较。所有这些方法都是在评估中给出的,没有机会改变它的逻辑。我想根据数据返回3个字符串答案。非常感谢你们。我附上了一张照片。
{{1}}
答案 0 :(得分:2)
那么,在阅读评估后,我认为您可以放心地假设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 ...
}
}
答案 1 :(得分:0)
以下是我工作的解决方案,也可能有用
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";
}
}