2014-11-21 75 views
-1

我正在嘗試編寫一個程序供大學插入元素到基於向量的數組中。但是,我的insertAtRankremoveAtRank方法似乎不起作用。任何幫助是極大的讚賞。insertAtRank向量算法

這是到目前爲止我的代碼:

public class ArrayVector implements Vector { 

    int n ; 
    Object[] A ; 
    Object element ; 

    public ArrayVector() { 
     A = new Object[10] ; 
     n = 0 ; 
    } 

    public int size() { 
     return n; 
    } 

    public boolean isEmpty() { 
     return n == 0; 
    } 

    public Object elemAtRank(int rank) throws RankOutOfBoundsException { 
     return A[rank]; 
    } 

    public Object replaceAtRank(int rank, Object element) throws RankOutOfBoundsException { 
     A[rank] = element ; 
     return element; 
    } 

    public String toString() { 
     int size = size(); 
     String output = "" + size + "\t"; 

     for (int i = 0 ; i < size ; i++){ 
      output += A[i] + " "; 
     } 
     return output; 
    } 

    public void insertAtRank(int rank, Object element) throws RankOutOfBoundsException { 
     for (int i = n ; i < rank ; n--){ 
      A[i] = A[i+1] ; 
     } 
     A[rank] = element ; 
     n++ ; 
    } 

    public Object removeAtRank(int rank) throws RankOutOfBoundsException { 
     element = A[rank]; 
     for (int i = rank ; i < n-2 ; rank++){ 
      A[i] = A[i+1] ; 
     } 
     n = n-1 ; 
     return element ; 
    } 

    public static void main(String[] args) throws RankOutOfBoundsException { 
     ArrayVector newArray = new ArrayVector() ; 

     System.out.println (newArray.toString()) ; 
     newArray.insertAtRank(0, "c"); 
     System.out.println (newArray.toString()) ; 
     newArray.insertAtRank(1, "a"); 
     System.out.println (newArray.toString()) ; 
     newArray.removeAtRank(0) ; 
     System.out.println (newArray.toString()) ; 
     newArray.insertAtRank(2, "t"); 
     System.out.println (newArray.toString()) ; 
    } 
} 
+0

爲什麼你不滿意內置矢量?你想爲這兩種方法做什麼?在你的語境中什麼是「排名」? – Kent 2014-11-21 23:48:46

+0

這是一項家庭作業,所以我猜他不能使用java.util.Vector類。 – him 2014-11-22 00:00:01

+0

爲什麼不使用ArrayList ?你需要同步嗎?你將如何使用它?你需要什麼樣的數據增長? x2或x1.5? – RussianVodka 2014-11-22 00:00:03

回答

0

好吧,各位... 繼承人你需要:

public class MyVectorInsertingLel{ 

    private static Object[] objects; 
    private static int n; 

    public static void main(String []args){ 
     MyVectorInsertingLel v = new MyVectorInsertingLel(10); 
     v.insertObject("c"); 
    } 

    public MyVectorInsertingLel(int initialHeap) 
    { 
     n = 0; 
     objects = new Object[initialHeap]; 
    } 

    public void insertObject(Object obj) 
    { 
     n++; 
     if (n > objects.length) 
     { 
      Object[] temp = objects.clone(); 
      objects = new Object[objects.length*2]; 
      System.arraycopy(temp, 0, objects, 0, temp.length); 
     } 
     objects[n] = obj; 
    } 

} 

「元素插入一個基於矢量的陣列」 - 載體 - 根據理解爲可擴展... 因爲你沒有說「刪除」或其他任何東西,沒有理由生氣:3真的。這是一個答案!

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – briantist 2014-11-22 00:11:36

+0

@briantist只是在編輯de mess .. – RussianVodka 2014-11-22 00:15:32

+0

它被標記爲審查,這就是消息來自何處。儘量不要發佈沒有內容的答案,以後再編輯內容。使用編輯器中的預覽按照您想要的方式清理/格式化所有內容,然後保存。 – briantist 2014-11-22 00:18:32