2017-10-28 29 views
0
import java.util.LinkedList; 
import java.util.List; 
import java.util.ListIterator; 

public class vijftienpunt1 { 

public static void downsize(LinkedList<String> employeeNames, int n) { 
    for (int i = 0; i < employeeNames.size(); i++) { 
     if(i%n==0) { 
      employeeNames.remove(i); 
     } 
    } 
} 

public static void main(String[] args) { 
    LinkedList<String> employeeNamess = new LinkedList<String>(); 

    employeeNamess.add("Ab"); 

    employeeNamess.add("Yo"); 
    employeeNamess.add("Ik"); 
    employeeNamess.add("Jij"); 

    System.out.println(employeeNamess); 
    downsize(employeeNamess, 2); 
    System.out.println(employeeNamess); 
} 
} 

當我運行這個不起作用,它會刪除其他第n個元素,我該如何解決這個問題。我嘗試了更多的操作,但它仍然不起作用刪除每第n個員工不工作

+0

嘗試了這一點如撲克牌在桌子上,你會很快注意到它爲什麼不工作。提示:嘗試顛倒順序。 – fvu

+0

@fvu我不還是得到它 –

+0

如果T優刪除元素,下列元素的指數下降。這就是爲什麼它似乎刪除「隨機」元素,因此我的提示。 – fvu

回答

2

只要您想從列表中刪除元素,就使用Iterator。

嘗試下面的代碼:

public static void downsize(LinkedList<String> employeeNames, int n) { 
    int i=1; 
    Iterator<String> iter=employeeNames.iterator(); 
    while(iter.hasNext()){ 
     iter.next(); 
     if(i%n==0) { 
      iter.remove(); 
     } 
     i++; 
    } 
} 
+0

謝謝!我如何在forloop中解決這個問題?我已經嘗試過了,但是我的版本不起作用 –

+0

反轉你的循環.. –