<运营商>未定义参数类型void,void

时间:2013-11-09 10:19:41

标签: java

嗨,我用这个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);
}
你能帮帮我吗?我尝试了很多方法来解决这个错误,但没有任何帮助,谢谢。

3 个答案:

答案 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并返回日期/年龄比较的结果。