2016-12-04 16 views
0

私はいくつかの挿入、選択、バブルソートを作成しました。彼らは、オブジェクトの配列がいっぱいですが、私は5を持っている配列を作成し、3だけでそれを埋めるときに動作するように見える、私はソート時にエラー。ここに私のソートコードがあります。配列が一杯でないときに配列を並べ替えることはできません

public class CityList { 
    private City[] city; 
    private Integer numberOfCities; 

    public CityList (Integer cityListSize){ 
     this.city=new City[cityListSize]; 
     this.numberOfCities=0; 
    } 

    public void addCity(String city){ 
     this.city[this.numberOfCities]=new City(city); 
     this.numberOfCities++; 
    } 

    public String toString(){ 
     String cityDetails=new String(); 
     if (this.numberOfCities!=0){ 
      cityDetails+=String.format("%-15s\n","CITY"); 
      for(Integer i=0;i<this.numberOfCities;i++) 
      cityDetails+=this.city[i]+"\n"; 
     } 
     else 
      cityDetails+="City list is empty"; 
     return cityDetails; 
    } 

    public void sort(){ 
     int j, i; 
     for(i =1; i < city.length; i++){  
      City temp = city[i];   
      j = i;     
      while((j>0) && ((city[j -1].getCity().compareTo(temp.getCity()))>0)){    
       city[j] = city[j-1]; 
       --j; 
      }  
      city[j] = temp;  
     } 
    } 
} 
+0

もっと一般的なアプローチとして、配列の最後にヌルオブジェクトのみが存在すると仮定するのではなく、ヌルオブジェクトを無視することができます。これを行う1つの方法は、配列をパックして、配列の先頭にヌル以外のオブジェクトが続き、最後にヌルオブジェクトが続くようにすることです。私はこれがJava内部の仕組みがどのように動作するのかと思います。 – rcgldr

答えて

0

配列がフルでない場合は停止するためのループi < city.length && city[i] != nullに条件を追加します。 javaの配列も0ベースです。つまり、最初の要素はcity[0]ではありません。city[1]

+0

配列がいっぱいでなくても並べ替えたい。 – Stefza

+0

私は最初の要素がインデックス[0]であることを理解しています...それで、私はj-1をiと比較しています – Stefza

+0

@StefzaはcompareTo()関数でヌルが続き、それに従わなければならない順序を定義しました – diedu

関連する問題