Java 尝试使用我自己的方法时找不到符号错误
我有一个Java 尝试使用我自己的方法时找不到符号错误,java,object,methods,Java,Object,Methods,我有一个Time类,它有一个名为lessThan的比较方法 public boolean lessThan(时间t1,时间t2){ 如果(t1.getHours()>t2.getHours()){ 返回false; }else if(t1.getHours()==t2.getHours()){ 如果(t1.getMinutes()>=t2.getMinutes()){ 返回true; }否则 返回true; }否则 返回true; } 我想在我的主类中使用这个方法来比较传递给我的时间对象,从而
Time
类,它有一个名为lessThan的比较方法
public boolean lessThan(时间t1,时间t2){
如果(t1.getHours()>t2.getHours()){
返回false;
}else if(t1.getHours()==t2.getHours()){
如果(t1.getMinutes()>=t2.getMinutes()){
返回true;
}否则
返回true;
}否则
返回true;
}
我想在我的主类中使用这个方法来比较传递给我的时间对象,从而对我的时间对象进行排序
publicstaticvoidsortappoints(ArrayList
但是我在编译时遇到了一个找不到符号的错误。我做错了什么?如何在主类中使用我自己的方法?将您的方法设置为
静态
辅助函数,并以静态方式调用它,或者更改方法的签名以使用此
中存在的时间
实例,即
public boolean lessThan( Time other ) {
if (this.getHours() > other.getHours()) {
return false;
}
}
然后在测试类中使用实例方法
boolean less = appointments.get(i).lessThan(appointments.get( i + 1 ));
同样对于列表的排序,一种更简单的方法是使您的
时间
实现可比性
,然后使用集合。排序(列表)
将您的方法设置为静态
辅助函数,并以静态方式调用它,或者更改方法的签名,以使用此
中存在的时间
实例,即
public boolean lessThan( Time other ) {
if (this.getHours() > other.getHours()) {
return false;
}
}
然后在测试类中使用实例方法
boolean less = appointments.get(i).lessThan(appointments.get( i + 1 ));
同样对于列表的排序,一种更简单的方法是使您的时间
实现可比性
,然后使用集合
我有一个时间类,它有一个叫做lessThan的比较方法
及
我想在我的主类中使用这个方法
,很明显,你试图用
但是调用lessThan()
,就像在主类的静态方法中一样,将针对主类解析方法名lessThan
。您想要的方法不在那里,而是在Time
类中
此外,您已经实现了Time.lessThan(Time,Time)
作为实例方法,因此需要在Time
的实例上调用它,但它似乎没有使用该实例。作为类Time
的实例方法,如果它只接受一个参数,并评估调用它的实例是否小于该参数,那么它将更有意义。目前的情况是,如果该方法是静态的,那么它会更有用
解决此问题的最小更改集是
使方法静态
:
// In class Time
public static boolean lessThan( Time t1, Time t2 ) { // ...
及
在主类中这样调用它:
if( !Time.lessThan( appointments.get( i ), appointments.get( i + 1 ) ) ) {
你写
我有一个时间类,它有一个叫做lessThan的比较方法
及
我想在我的主类中使用这个方法
,很明显,你试图用
但是调用lessThan()
,就像在主类的静态方法中一样,将针对主类解析方法名lessThan
。您想要的方法不在那里,而是在Time
类中
此外,您已经实现了Time.lessThan(Time,Time)
作为实例方法,因此需要在Time
的实例上调用它,但它似乎没有使用该实例。作为类Time
的实例方法,如果它只接受一个参数,并评估调用它的实例是否小于该参数,那么它将更有意义。目前的情况是,如果该方法是静态的,那么它会更有用
解决此问题的最小更改集是
使方法静态
:
// In class Time
public static boolean lessThan( Time t1, Time t2 ) { // ...
及
在主类中这样调用它:
if( !Time.lessThan( appointments.get( i ), appointments.get( i + 1 ) ) ) {
在用Java编写更多代码之前,您可能想了解static
关键字的含义。此外,我建议您在if-else语句中始终使用花括号。尽管Java允许在单行语句中使用不带花括号的语法,但它会导致难以发现的逻辑错误?(它找不到哪个符号?)(我想它的比小,但是养成总是指定确切错误及其显示位置的习惯是值得的。)@SoftwareEngineer,您可能想继续阅读。虽然这涉及到C而不是Java代码,但原理是一样的。在if
、else
和loop body block周围始终使用花括号是防止犯此类错误的一种很好的文体做法。就我个人而言,我只对作为else
语句(整个)主体的if
语句例外。在Java上下文中,特别相关的是(从1997年开始)为if
和else
主体指定了始终使用花括号的相同做法,尽管现在比过去少了,除非else
的主体仅包含if
语句。他们将大括号的省略描述为“容易出错”。在用Java编写更多代码之前,您可能想了解static
关键字的含义。此外,我建议您在if-else语句中始终使用大括号。尽管Java允许在单行语句中使用不带花括号的语法,但它会导致难以发现的逻辑错误