2014-11-10 4 views
-1

Я пытаюсь преобразовать функцию, которая у меня была, что quickSorted массив в векторную функцию quicksort. Я продолжаю получать это, не могу найти символ. Это моя функция, что им пытаются адаптироваться в вектор QuickSortJava quickSort Vectors

public static void quickSort(Vector<Personne> arr, int low, int high, Personne[] pers) { 
    if (arr.isEmpty() == true || arr.size()== 0) 
     return; 

    if (low >= high) 
     return; 

    int middle = low + (high - low)/2; 
    int pivot = arr.get(middle).getNumero(); 
    int i = low, j = high; 

    while (i <= j) { 
     while (arr.get(i).getNumero() < pivot) { 
      i++; 
     } 

     while (arr.get(j).getNumero() > pivot) { 
      j--; 
     } 

     if (i <= j) { 
      Vector<Personne> temp = new Vector<Personne>(); 
      temp.add(arr.get(i)); 
      arr.get(i).add(arr.get(j)); 

      i++; 
      j--; 
     } 
    } 

    if (low < j) 
     quickSort(arr, low, j, pers); 

    if (high > i) 
     quickSort(arr, i, high, pers); 
} 

Эта часть функции дает мне ошибки:

if (i <= j) { 
    Vector<Personne> temp = new Vector<Personne>(); 
    temp.add(arr.get(i)); 
    arr.get(i).add(arr.get(j)); 
    i++; 
    j--; 
} 

Я попытался .get(), .elementAt(), создавая новые векторы временных, которые будут содержать но я просто не могу это исправить.

ошибка

C:\Users\Arnold\Desktop\numero3.java:241: error: cannot find symbol arr.get(i).add(arr.get(j));^symbol: method add(Personne) location: class Personne 1 error

+0

что вы получаете? –

+0

и что если предложение, вы что-нибудь обмениваете? Я думаю, что не –

+0

дайте мне ошибку символа – user3268216

ответ

0

error: cannot find symbol [...] symbol: method add(Personne) location: class Personne

Эта ошибка говорит вам, что ваш Personne класс не имеет add(Personne) метод. Это, похоже, не проблема импорта, как было предложено в комментариях, потому что кажется, что вы используете Personne объекты в другом месте вашего кода без проблем.

Итак, проблема заключается в том, что у вас нет метода add(Personne) на вашем классе Personne, и в этом случае (казалось бы, сомнительная дизайнерская практика) вам нужно добавить один. Или, и это моя догадка, у вас do есть метод add(Personne) в этом классе, но он либо личный (так что другие классы не могут найти этот символ), либо это пакетно-частный (то есть он не имеет модификатора доступа), и вы «При попытке доступа к нему из класса в другом пакете, и в этом случае этот класс не может найти этот символ

+0

thx. я исправил его, заменив его Personne o = arr.elementAt (i); \t \t \t \t arr.setElementAt (arr.elementAt (j), i); \t \t \t \t arr.setElementAt (o, j); \t \t \t \t i ++; \t \t \t \t j--; – user3268216

0

Основание на этом фрагменте кода из Program: Implement quick sort in java.

private void exchangeNumbers(int i, int j) { 
     int temp = array[i]; 
     array[i] = array[j]; 
     array[j] = temp; 
    } 

вы обмениваясь элемент я индекса с элементом J индекса, так что кажется, вы забыли поставить значение temp - j индекс arr vector

if (i <= j) { 
    Vector<Personne> temp = new Vector<Personne>(); 
    temp.add(arr.get(i)); 
    arr.get(i).add(arr.get(j)); 
    arr.add(temp.get(j)); <--------forget this line 
    i++; 
    j--; 
} 

Примечание: Ваш Personne класс не имеет метод добавления

When a Java program is being compiled the compiler creates a list of all the identifiers in use. If it can't find what an identifier refers to (e.g., there is no declaration statement for a variable) it cannot complete the compilation. This is what the cannot find symbol error message is saying, it doesn't have enough information to piece together what the Java code wants to execute.

+0

О, извините, но я удалил эту строку случайно. позвольте мне вернуть его обратно. но даже с этим вводом он все еще продолжает давать мне ошибку: не могу найти символ – user3268216