2

嗨,我得到这个 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);
}

你能帮助我吗?我尝试了很多方法来修复此错误,但没有任何帮助,谢谢。

4

3 回答 3

4

发生错误是因为您试图void在以下语句中使用 > 运算符比较两个(s):

if(age(ob2) > age(ob))

您的age方法返回void此处提到:

public static void age(Ship ob)

您可能应该从年龄返回一个整数值,这将使您的比较合乎逻辑。

于 2013-11-09T10:22:03.897 回答
0

您正在比较两个 void 返回值。您应该在方法中返回一个整数age,并可能更改其逻辑。

于 2013-11-09T10:37:57.460 回答
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 并返回日期/年龄比较的结果。

于 2013-11-09T10:46:38.680 回答