2014-11-21 2 views
-1

Я пытаюсь написать программу для колледжа, чтобы вставлять элементы в векторный массив. Однако мои методы insertAtRank и removeAtRank не работают. Любая помощь приветствуется.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

+0

Это домашнее задание, поэтому я предполагаю, что он не может использовать класс java.util.Vector. – him

+0

Почему бы не использовать ArrayList ? Вам нужна синхронизация? Как вы будете использовать его? Какой рост данных вам нужен? x2 или x1.5? – RussianVodka

ответ

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

+0

@briantist только что находился в процессе редактирования беспорядка. – RussianVodka

+0

Он был помечен для обзора, и вот откуда это сообщение. Старайтесь не публиковать ответ без содержания, чтобы впоследствии редактировать его содержимое. Используйте предварительный просмотр в редакторе, чтобы очистить/отформатировать все так, как вы хотите, а затем сохранить его. – briantist

Смежные вопросы