2015-02-26 2 views
0

Мне нужно удалить ученика по определенному индексу из массива, поэтому я удаляю этого ученика и перемещая элементы влево, но моя проблема заключается в том, что один элемент дублирует. обратите внимание, что не все мои массив заполнен Я заполняю его через программу так, может быть, последний студент не последний элемент в моем массиве 'Как удалить элемент массива без дублирующих элементов?

public static void removestudent(int index) { 

     for (int j = index; j < employee.length - 1; j++) { 
       employee[j] = employee[j + 1]; 
     } 
     System.out.println("The student was removed successfully"); 
    } 
} 
+1

Почему бы не использовать ArrayList? – NoBugs

+1

, когда вы переходите влево, вы можете сделать последний элемент как 0 или -1, если вы хотите, чтобы он был пустым. – Vihar

+4

ваш входной параметр должен быть 'int index' not' String index' –

ответ

3

значение получает дублируется, как вы назначаете employee[j] = employee[j + 1]; так, когда цикл завершает employee[j + 1] остается неизменным! поэтому повторяющиеся значения. После цикла назначьте employee[j + 1] пустым.

0
public static void removestudent(String index) { 
    int temp[]; 
    for (int j = 0; j < employee.length - 1; j++) { 
     if(j<index){  
      temp[j] = employee[j]; 
     }else 
     { 
    temp[j] =employee[j++]; 
    } 
    } 
    System.out.println("The student was removed successfully"); 
    employee = temp; 
} 

}

1

Из кода, выглядит как последние два элемента, на работника позиции [J] и работника [J + 1] соответственно. дублируются.
Вы должны удалить элемент у сотрудника [j + 1], потому что его уже скопировали на сотрудника местоположения [j].

enter image description here

Мой recommandation должен использовать ArrayList, так как он уже обрабатывает этот вид ситуаций.

_Thanks, Бхушан

0

Вы можете следить за различными approach.simply как это ....!

public static void main(String args[]) { 
    String [] employee={"a","b","c","d","e"}; 
    Set<String> s =new LinkedHashSet<String>(); 
    int index=4; 
    for(int i=0;i<employee.length;i++) 
    { if(i!=index) 
    { 
     s.add(employee[i]); 
    } 
    } 
    System.out.println(s); 
    System.out.println("The student was removed successfully"); 
} 
Смежные вопросы