任务如下:
对于给定的 0 < n < 200,被视为一个人的年龄,返回一个字符串,如:“21 岁”、“32 岁”、“12 岁”。
写了这样的东西:
fun ageDescription(age: Int): String {
return when {
age / 10 % 10 == 1 -> "$age лет"
age % 10 == 1 -> "$age год"
age / 10 % 10 == 9 -> "$age лет"
else -> "$age года"
}
}
测试成功通过,顺便说一下:
@Test
fun ageDescription() {
assertEquals("1 год", ageDescription(1))
assertEquals("21 год", ageDescription(21))
assertEquals("132 года", ageDescription(132))
assertEquals("12 лет", ageDescription(12))
assertEquals("111 лет", ageDescription(111))
assertEquals("199 лет", ageDescription(199))
}
是否可以简化此决定?然后似乎这条线是多余的:age / 10 % 10 == 9 -> "$age лет"
PS 复数形式(few, many, other, etc..),不适合 Android :)
在我看来,这有 5 个条件。
爪哇
这是每个年龄段的一个:
或者更简单:
如果你想使用 else 分支过滤不满足条件的值:0 < age,那么这个算法适合你: