好吧,我正在做一個相當複雜的任務。基本上我有一類汽車,然後是它的子類(乘用車和非乘客),然後是它們的子類(超小型汽車,小型皮卡車等)。我也有一個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;
}
}
微型類:(子類的實例)
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;
}
}
Database類:
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;
}
}
驅動程序類:類Sorting.java
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());
}
}
插入排序方法
//-----------------------------------------------------------------
// 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;
}
}
}
是什麼您的具體問題/問題/問題?你已經發布了代碼,但是你還沒有描述任何問題...... – maerics
創建汽車數組或列表,並使用比較器對板號進行排序。爲什麼要寫一個插入排序算法的痛苦? –
我的問題是插入排序方法無法正常工作,即使我試圖將數據轉換爲Comparable。並且assinment指出我們必須按照原樣使用insertionSort方法。 – user3267872