试图在我的if语句

时间:2015-10-21 18:18:31

标签: groovy

这是Java / Groovy(我们首先学习语法)。我已经坚持了2天。

这是我的代码:

char am = "a";
char pm = "p";

def to24hour(int hour) {
    if (hour >= 1 && hour <= 12) {
        int newHour = hour + 12;
        return newHour;
    } else if (hour >= 13 && hour <= 24) {
        int newHour = hour
        return newHour;
    } else if (hour == 0){
        int newHour = hour
        return "invalid number used!";        
    } else {
        return "invalid number used!";
    }
}


to24hour(3);

这就是问题:

  

编写一个名为to24Hour的函数,该函数有两个参数:小时值和应该是A或P的字母。该函数将指定为AM或PM的时间转换为24小时制的小时数。因此,例如,调用值为5和P的函数应该返回17而5和A应该返回5.这样的函数可能存在哪些问题(如果使用了无效值)?你怎么能处理这些问题?

1 个答案:

答案 0 :(得分:0)

试试这个:

char am = "a";
char pm = "p";

int to24hour(int hour, char clock) {
    if (hour >= 1 && hour <= 11) {
        if(clock == "p") return hour + 12
        else return hour
    } else if(hour == 12) {
        if(clock == "p") hour
        else return 0
    } else {
        throw Exception("invalid number used!")
    }
}

[1..12, (1..11).toList() + [0]]
    .transpose()
    .each { assert to24hour(it[0], am) == it[1] }

[1..12, (13..23).toList() + [12]]
    .transpose()
    .each { assert to24hour(it[0], pm) == it[1] }