想不通编译错误进行简单的Java应用程序

问题描述:

这是我收到的错误: 错误:类型客户必须实现继承的抽象方法java.lang.Comparable.compareTo(客户)想不通编译错误进行简单的Java应用程序

我将它与我做的一些实验工作进行比较,看起来完全一样,但编译得很好。我不确定这里发生了什么事。

这里是有问题的代码段,顺便说一下,写我的教授:

class Customer implements Comparable<Customer> 
{ 
String name; 
double purchase; 
double rebate; 

public Customer(String n, double p, double r) 
{ name=n; 
    purchase=p; 
    rebate=r; 
} //end Constructor 

public Customer(String n) 
{ 
    name=n; 
} //end Constructor 

public String toString() 
{ 
    return String.format("%-20s%10.2f%10.2f", name, purchase, rebate); 
} 

/* 
    Here, define the method comparedTo of the Comparable 
    interface so that an array of Customer objects can 
    be sorted by customer name 
*/ 
public int comparedTo(Customer a) 
{ 
return this.name.compareTo(a.name); 
} //end comparedTo 

} //end class Customer 

哦,这里有夹杂物包括教授:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Arrays; 
import java.util.Comparator; 
import java.util.Scanner; 

你的帮助是很大的不胜感激!

+0

@Lish:欢迎使用Code Review。本网站用于审核工作代码,而不是解决编译问题。迁移到*。 Ack! – 2011-03-02 14:06:34

+0

Ack!对于那个很抱歉! – Lish 2011-03-02 14:10:15

comparedTo应该是compareTo

错误说明了一切。 ; p

+0

Agh。我一定不能阅读,因为我完全没有建立这种联系。我只是按照教授在问题陈述中所说的去做。虽然我们使用'compareTo()',但我们突然切换到'comparisonTo()'似乎有点奇怪。 – Lish 2011-03-02 14:08:59

正如Steven正确指出的那样,您尝试实施的方法的名称拼写错误。赶上这样的错误的一个好方法是@Override注释,像这样:

@Override 
public int comparedTo(Customer a) 

这告诉你打算comparedTo()覆盖在父类中声明的方法编译器。当编译器没有找到一个要重写的comparisonTo()方法时,它会告诉你。从Java 1.6起,@Override也可用于在接口中声明的方法。

+0

哦,很酷。下次我会记住这一点。我不知道这是可能的。 – Lish 2011-03-02 17:52:42