比较对象
除了像 int 这样的基元,你不能在其他任何东西上使用 <。请改用compareTo。
比如first.compareTo(second),结果要么
- 负(如果更小),
-
0(如果等于)或
- 正大于 0(如果大于)。
所以等同于first < second 将是first.compareTo(second) < 0。
特别比较LocalTime
为了java.timeAPI,还有像isBefore和isAfter这样的特殊方法,使这种比较更加简单。
LocalTime 与 int
此外,您不能将诸如 LocalTime 之类的高级对象与普通的 int 进行比较。看一下
LocalTime.of(12, 0)
和类似的方法。
还有一些特殊的预创建常量,例如LocalTime.MIDNIGHT和LocalTime.NOON。
把一切放在一起
如果您遵循这两个建议,固定代码可能如下所示:
LocalTime t = LocalTime.now();
if (t.isAfter(LocalTime.MIDNIGHT) && t.isBefore(LocalTime.NOON)) {
System.out.println("Good Morning!");
} else if (t.isAfter(LocalTime.NOON) && t.isBefore(LocalTime.of(18, 0))) {
System.out.println("Good Afternoon!");
} else {
System.out.println("Hello Neel, how may I help you");
}
理想情况下,您还可以引入一种快速帮助方法,例如
private static boolean isBetween(LocalTime start, LocalTime time, LocalTime end) {
return time.isAfter(start) && time.isBefore(end);
}
进一步简化代码:
LocalTime t = LocalTime.now();
if (isBetween(LocalTime.MIDNIGHT, t, LocalTime.NOON)) {
System.out.println("Good Morning!");
} else if (isBetween(LocalTime.NOON, t, LocalTime.of(18, 0))) {
System.out.println("Good Afternoon!");
} else {
System.out.println("Hello Neel, how may I help you");
}