嗨,我用这个java代码
得到了标题中的错误public static void age(Ship ob){
DateTime myBirthDate = ob.getDate();
DateTime now = new DateTime();
Period period = new Period(myBirthDate, now);
System.out.print("Ship age is " + ob.getName() + " е " );
PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendYears().appendSuffix(" years")
.appendMonths().appendSuffix(" months")
.appendWeeks().appendSuffix(" weeks")
.appendDays().appendSuffix(" days")
.appendHours().appendSuffix(" hours")
.appendMinutes().appendSuffix(" mnutes")
.appendSeconds().appendSuffix(" seconds\n ")
.printZeroNever().toFormatter();
String elapsed = formatter.print(period);
System.out.println(elapsed);
}
public static void compare(Ship ob, Ship ob2) throws ParseException {
if(age(ob2) > age(ob)){ //<---- I get the Error here , when i try to comapre two objects
System.out.println( "The ship,wich is more years is " + ob2);
} else
System.out.println( "The ship,wich is more years is " + ob);
}
你能帮帮我吗?我尝试了很多方法来解决这个错误,但没有任何帮助,谢谢。
答案 0 :(得分:4)
发生错误是因为您尝试使用&gt;比较两个void
(s)运算符在以下语句中:
if(age(ob2) > age(ob))
您的age
方法返回void
,如下所述:
public static void age(Ship ob)
您可能应该从年龄返回一个整数值,这将使您的比较符合逻辑。
答案 1 :(得分:0)
你比较两个空值返回值。你应该在age
方法中返回一个整数,并且可能会改变它的逻辑。
答案 2 :(得分:0)
int compareResult = ob.getDate().compareTo(ob2.getDate());
if (compareResult > 0) //ob2 date after ob date
else if (compareResult < 0) //ob2 date before ob
else //ob2 has same date as ob
如果你想练习OOP,计算这样的年龄并不好。 您应该将age方法设为Ship类的成员。和/或在Ship类中使用比较方法接受另一个Ship并返回日期/年龄比较的结果。