私はオブジェクト配列Customer
を比較しているクラスの代入を行い、次にユーザーにいくつかのメソッドを提供しています。 「抽象メソッドではない抽象メソッドcompareTo(Customer)をjava.lang.Comparable
にオーバーライドしていないというエラーが表示されています。このフォーラムでこれが処理された場合は申し訳ありませんが、この無意味のすべてが。Comparable実装のエラーに関する問題
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