【发布时间】:2021-04-28 18:21:36
【问题描述】:
我有一个 Time 类,它有一个名为 lessThan 的比较方法
public boolean lessThan(Time t1, Time t2) {
if (t1.getHours() > t2.getHours()) {
return false;
} else if (t1.getHours() == t2.getHours()) {
if (t1.getMinutes() >= t2.getMinutes()) {
return true;
} else
return true;
} else
return true;
}
我想在我的主类中使用此方法与传递给我的 Time 对象排序的 Time 对象进行比较。
public static void sortAppointments(ArrayList < Time > appointments) {
Time val;
for (int i = 0; i < appointments.size(); i++) {
if (!lessThan(appointments.get(i), appointments.get(i + 1))) {
val = appointments.get(i + 1);
appointments.set(i + 1, appointments.get(i));
appointments.set(i, val);
}
}
}
但是编译时出现找不到符号错误。我究竟做错了什么?如何在主类中使用自己的方法?
【问题讨论】:
-
在用 Java 编写更多代码之前,您可能想了解
static关键字的含义。 -
另外,我建议您始终在 if-else 语句中使用大括号。尽管 Java 允许单行语句不使用大括号的语法,但它会导致难以发现的逻辑错误。
-
您在哪里看到错误,错误是什么确切? (找不到哪个符号?)(我怀疑它是
lessThan,但值得养成总是指定确切错误及其显示位置的习惯。) -
@SoftwareEngineer,您可能想阅读Apple's notorious "goto fail" bug。虽然这涉及到 C 而不是 Java 代码,但原理是一样的。始终在
if、else和循环体块周围使用花括号是防止出现此类错误的良好风格实践。就我个人而言,我只对作为else语句的(整个)主体的if语句例外。 -
在 Java 上下文中特别相关,尽管现在比以前少了,但 the original Sun coding conventions for Java(从 1997 年开始)指定了相同的做法,即始终对
if和 @987654333 使用花括号@body,除非else的主体仅包含if语句。他们将大括号的省略描述为“容易出错”。