Я пытаюсь отсортировать массив (я должен использовать массивы), когда новые данные входят в массив (не добавить все элементы, а затем отсортировать).Мой алгоритм сортировки работает некорректно.Вместо того, чтобы возвращать отсортированный массив, он возвращает только 3 записи, которые повторяются несколько раз.
Это то, что я пытаюсь добавить в массив:
arrayDirectory.addEntry("Smith RK 005598");
arrayDirectory.addEntry("Alal KA 004567");
arrayDirectory.addEntry("Bors OB 005678");
arrayDirectory.addEntry("Zaaa NZ 001234");
arrayDirectory.addEntry("Zoll NZ 001254");
arrayDirectory.addEntry("Ola KO 001245");
Это то, что онвозвращает:
------PHONE DIRECTORY AS OF WED MAR 27 15:29:52 GMT 2019------
SURNAME: BORS INITIALS: OB NUMBER: 005678
SURNAME: BORS INITIALS: OB NUMBER: 005678
SURNAME: BORS INITIALS: OB NUMBER: 005678
SURNAME: BORS INITIALS: OB NUMBER: 005678
SURNAME: BORS INITIALS: OB NUMBER: 005678
SURNAME: SMITH INITIALS: RK NUMBER: 005598
SURNAME: SMITH INITIALS: RK NUMBER: 005598
SURNAME: SMITH INITIALS: RK NUMBER: 005598
SURNAME: SMITH INITIALS: RK NUMBER: 005598
SURNAME: SMITH INITIALS: RK NUMBER: 005598
SURNAME: ZOLL INITIALS: NZ NUMBER: 001254
SURNAME: ZOLL INITIALS: NZ NUMBER: 001254
SURNAME: ZOLL INITIALS: NZ NUMBER: 001254
SURNAME: ZOLL INITIALS: NZ NUMBER: 001254
SURNAME: ZOLL INITIALS: NZ NUMBER: 001254
SURNAME: ZOLL INITIALS: NZ NUMBER: 001254
SURNAME: ZOLL INITIALS: NZ NUMBER: 001254
SURNAME: ZOLL INITIALS: NZ NUMBER: 001254
SURNAME: ZOLL INITIALS: NZ NUMBER: 001254
В чем проблема?
Это мой метод addEntry:
@Override
public void addEntry(String line) {
String[] newLine = line.split("\\s+");
String surname, initial, number;
if (newLine.length == 3) {
surname = newLine[0];
initial = newLine[1];
number = newLine[2];
} else {
throw new IllegalArgumentException("Please fill all the required fields, [surname,initials,number]");
}
if (count == entries.length) {
Entry[] tempEntries = new Entry[2 * count];
System.arraycopy(entries, 0, tempEntries, 0, count);
entries = tempEntries;
} else {
Entry entry = new Entry(surname, initial, number);
for (int i = 0; i < entries.length; i++) {
for (int j = i + 1; j < entries.length; j++)
if (entries[j]!=null){
String one = entries[j].getSurname();
if (surname.compareToIgnoreCase(one) > 0) {
Entry temp = entries[i];
entries[i] = entries[j];
entries[j] = temp;
}
}
else {
entries[count]=entry;
count++;
}
}
}
}
, и это мой метод печати:
public void printEntries()throws NullPointerException{
Date date=new Date();
System.out.println("------PHONE DIRECTORY AS OF "+date.toString().toUpperCase()+"------");
for(int i=0;i<entries.length;i++){
if(entries[i].getSurname()==null){
throw new NullPointerException("------END OF DIRECTORY------");
}else{
System.out.printf("SURNAME: %S INITIALS: %S NUMBER: %s %n",entries[i].getSurname(),entries[i].getInitial(),entries[i].getNumber());
}
}
}
любая помощь будет принята с благодарностью!