我正在做一个类的任务,我们正在比较一个对象数组Customer
,然后向用户提供一些方法。我不断收到一个错误,指出“客户不是抽象的,并且不覆盖java.lang.Comparable
中的抽象方法compareTo(Customer)。如果已经在此论坛上讨论过,我很抱歉,但是我找到一个答案时遇到了问题所有这些无意义的。可比较实现中的错误
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
class prog4 {
public static void main(String args[])
throws FileNotFoundException
{
Scanner kb=new Scanner(System.in);
Customer [] A =readArray(); //read data into objects in A
while(true)
{
System.out.println();
System.out.println();
System.out.println("Please select one of the follwing actions: ");
System.out.println("q - Quit");
System.out.println("a - List the customer records sorted by customer name");
System.out.println("b - Enter a customer name to find the customer's record");
System.out.println("c - List the customer records sorted by purchase in descending order");
System.out.println("Please enter q, a, b, or c: ");
String selection=kb.nextLine(); //read user's selection
if (selection.equals("")) continue; //break; //if selection is "", show menu again
switch (selection.charAt(0))
{
/*write code to process the following cases*/
case 'a':
break;
case 'b':
break;
case 'c':
break;
case 'q':
return;
default:
} //end switch
} //end while
} //end main();
//the following method uses the data from indata.txt
//to create Customer objects of an array
//and returns the array
private static Customer[] readArray()
throws FileNotFoundException
{
String name;
double purchase;
double rebate;
Scanner infile=new Scanner(new File("indata.txt")); //input file
int size=infile.nextInt(); //get number of lines
infile.nextLine(); //skips end of line
Customer A[]=new Customer[size];
for (int k=0; k<size; k++)
{
//read a name = 16 characters
infile.useDelimiter("");
name="";
for (int i=0; i<16; i++) name=name+infile.next();
infile.reset();
purchase=infile.nextDouble();
rebate=infile.nextDouble();
if (infile.hasNextLine()) infile.nextLine(); //skip end of line
A[k]=new Customer(name, purchase, rebate); //create object for A[i]
} //end for loop
infile.close();
return A;
} //end readArray
//the method prints the Customer objects of the array A
//one customer record per line
private static void printArray(Customer [] A)
{
for (Customer x:A)
{System.out.println(x);}
} //end printArray
} //end class prog4
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);
}
public int compareTo(Customer a, Customer b)
{return b.name.compareTo(a.name);}
}
//end class Customer
class descendingPurchase implements Comparator<Customer>
{
public int compare(Customer a, Customer b)
{
if(a.purchase<b.purchase) return 1;
else if(a.purchase==b.purchase) return 0;
else return -1;
}
}
你得到编译错误? – lolo 2012-03-01 23:48:34