2015-03-17 5 views
0

Я ссылаюсь на свой код на сайт mathebits на SelectionSorting, изменяя переменные соответственно от int до String для моего случая и добавляя сортировку по алфавиту.Сортировка массива по алфавиту с помощью SelectionSort без Array.sort (обновлено)

Ниже мой текущий код для SelectionSort студентов по lastName:

public static void SelectionSort(Student[] st) { 
     int i, j, first; 
     String temp; 
     String jLastName = ""; 
     String firstLastName = ""; 
     String iLastName =""; 
     for (i = st.length - 1; i > 0; i--) { 
      first = 0; 
      for (j = 1; j <= i; j++) 
      { 
       if (st[j].getLastName() != null) { 

        jLastName=st[j].getLastName(); 

        if (st[first].getLastName() != null) { 

         firstLastName = st[first].getLastName(); 

         if ((jLastName.compareToIgnoreCase(firstLastName)) > 0) { 
          first = j; 
         } 
        } 
       } 
      } 

      iLastName = st[i].getLastName(); 
      temp = firstLastName; 
      firstLastName = iLastName; 
      iLastName = temp; 

     } 
    } 

код не дает мне ошибку. Однако выход не показывает, что он был отсортирован в соответствии с альпапатическим порядком. Могу я узнать, в какой части я совершил ошибку? Спасибо

+0

'String.compareTo()' не сравнивая 'длины String' ... –

+0

@FlorentBayle Я вижу! Мое неправильное толкование! Я попробую еще раз – gymcode

+0

Вызов метода не является допустимой целью для назначений. Скорее всего, вы все равно должны поменять студентов, вместо того чтобы менять фамилии. – fabian

ответ

2

Вы не можете сравнить два строк, как номер, вместо этого используется метод CompareTo в строках, как:

if (st[..].getLastName().compareTo(..) < 0) {.. 

Кроме того, чтобы изменить значение, вы должны иметь новый сеттер метода в Студенте, как:

public void setLastName(String name) { 
    this.name = name; 
} 

И тогда вы могли бы назвать это нравится:

st[..].setName(st[i].getName()); 
+1

Я не думаю, что имена последних студентов должны быть изменены, если задача состоит в том, чтобы * "[...] сортировать массив по имени studentName по алфавитному порядку." * – fabian

+0

Я просто попытался ответить на вопрос о том, где OP застрял. – SMA

+0

Я сделал обновления для своего кода. Он не отображает ошибку, однако результаты не сортируются. – gymcode

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