好的,所以我做的任务相当复杂。基本上我有一类汽车,然后是它的子类(乘用车和非乘客),然后是它们的子类(小型汽车,小型皮卡等)。我还有一个sort.java类,它有各种排序方法。我应该创建一系列汽车,然后按照车牌号对它们进行排序。
Automobile class:
public class Automobile{
public String Name;
public String Colour;
public String plateNum;
public Automobile (String eName, String eColour, String eplateNum)
{
Name = eName;
Colour = eColour;
plateNum = eplateNum;
}
public String toString()
{
String result = "Name: " + Name +"\n";
result += "Colour: "+Colour+"\n";
result+= "Plate Number: "+ plateNum;
return result;
}
}//end Automobile
乘用车类:
abstract public class passengerCar extends Automobile{
public abstract double fee();
public passengerCar (String eName, String eColour, String eplateNum)
{
super (eName, eColour, eplateNum);
}
public String toString()
{
String result = super.toString();
result += "\n Fee: "+fee();
return result;
}
}
subcompact class :(子类的例子)
public class subCompact extends passengerCar{
public double litres;
public subCompact (String eName, String eColour, String eplateNum, double eLitres)
{
super (eName, eColour, eplateNum);
litres = eLitres;
}
public double fee(){
double cost = (litres / 10);
return cost;
}
}
数据库类:
public class CarDataBase{
private Automobile[] database;
private int count;
//creates initially empty database
public CarDataBase()
{
database = new Automobile[100];
count =0;
}
public void addminiCompact(String eName, String eColour, String eplateNum, double eLitres)
{
if(count == database.length)
increasesize();
database[count] = new miniCompact (eName, eColour, eplateNum, eLitres);
count++;
}
public void addsubCompact(String eName, String eColour, String eplateNum, double eLitres)
{
if(count == database.length)
increasesize();
database[count] = new subCompact (eName, eColour, eplateNum, eLitres);
count++;
}
public void addCompact(String eName, String eColour, String eplateNum, double eLitres)
{
if(count == database.length)
increasesize();
database[count] = new Compact (eName, eColour, eplateNum, eLitres);
count++;
}
public void addMidsize(String eName, String eColour, String eplateNum, double eLitres)
{
if(count == database.length)
increasesize();
database[count] = new Midsize (eName, eColour, eplateNum, eLitres);
count++;
}
public void addLarge(String eName, String eColour, String eplateNum, double eLitres)
{
if(count == database.length)
increasesize();
database[count] = new Large (eName, eColour, eplateNum, eLitres);
count++;
}
public void addSmallPickup(String eName, String eColour, String eplateNum, double eGvwr)
{
if(count == database.length)
increasesize();
database[count] = new SmallPickup (eName, eColour, eplateNum, eGvwr);
count++;
}
public void addStandardPickup(String eName, String eColour, String eplateNum, double eGvwr)
{
if(count == database.length)
increasesize();
database[count] = new StandardPickup (eName, eColour, eplateNum, eGvwr);
count++;
}
public void addVan(String eName, String eColour, String eplateNum)
{
if(count == database.length)
increasesize();
database[count] = new Van (eName, eColour, eplateNum);
count++;
}
public void addTwoSeater(String eName, String eColour, String eplateNum)
{
if(count == database.length)
increasesize();
database[count] = new TwoSeater (eName, eColour, eplateNum);
count++;
}
public void addSpecialPurpose(String eName, String eColour, String eplateNum, double eGvwr)
{
if(count == database.length)
increasesize();
database[count] = new SpecialPurpose (eName, eColour, eplateNum, eGvwr);
count++;
}
public String toString()
{
String report = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
report +="Number of Vechicles: "+count+"\n\n";
report+= "Vehicle list:\n\n";
for (int i = 0; i< count; i++)
{
report+= database[i]+"\n\n";
}
return report;
}
private void increasesize()
{
Automobile[] temp = new Automobile[database.length *2];
for (int car = 0; car<database.length; car++)
temp[car] = database[car];
database = temp;
}
}
驱动程序类:
public class Driver implements Comparable{
public static void main(String[] args){
CarDataBase db = new CarDataBase();
db.addsubCompact("Ford","blue","ABC123",2500);
db.addSmallPickup("Chevrolet","green","CBA321", 4000);
Sorting.insertionSort(db);
System.out.print(db.toString());
}
}
Sorting.java类中的插入排序方法
//-----------------------------------------------------------------
// Sorts the specified array of objects using the insertion
// sort algorithm.
//-----------------------------------------------------------------
public static void insertionSort (Comparable[] list)
{
for (int index = 1; index < list.length; index++)
{
Comparable key = list[index];
int position = index;
// Shift larger values to the right
while (position > 0 && key.compareTo(list[position-1]) > 0)
{
list[position] = list[position-1];
position--;
}
list[position] = key;
}
}
}
答案 0 :(得分:2)
您只需在Automobile中实施Comparable<Automobile>
并添加compareTo(Automobile)
方法:
public int compareTo(Automobile o) {
if (o == null)
return -1;
if (this.plateNum == null)
return 1;
return this.plateNum.compareTo(o.plateNum);
}