Java 如何从链表中删除素数

Java 如何从链表中删除素数,java,linked-list,iterator,primes,Java,Linked List,Iterator,Primes,我试图通过使用迭代器对LinkedList进行迭代来删除它的素数。我有以下代码 import java.util.LinkedList; import java.util.ListIterator; import java.util.Random; public class LinkedListProcesing{ public static void main(String[] args){ int listSize = 0; LinkedList<Integ

我试图通过使用迭代器对LinkedList进行迭代来删除它的素数。我有以下代码

import java.util.LinkedList;
import java.util.ListIterator;
import java.util.Random;

public class LinkedListProcesing{
    public static void main(String[] args){

    int listSize = 0;
    LinkedList<Integer> list = new LinkedList<Integer>();
    Random randNumGen = new Random();

    while(listSize<20){
        int nextRand = randNumGen.nextInt(101); //while there are less than 20 random ints process a new one
        list.add(nextRand); //add the new random number to the linked list
        //System.out.println(nextRand);
        listSize+=1; //iterate over the list size
    }

    System.out.println("The list contains these 20 random integers: " + list);

    ListIterator iterator = list.listIterator();
    int next = (Integer) iterator.next();

    for (int i=2; i<list.size(); i++){
        if (i>=1){
            list.remove(i);
        }
        if (next%i!=0){
            list.remove(i);
        }
    }

    System.out.println("This is the list excluding primes: " + list);
}
import java.util.LinkedList;
导入java.util.ListIterator;
导入java.util.Random;
公共类LinkedListProcessing{
公共静态void main(字符串[]args){
int listSize=0;
LinkedList=新建LinkedList();
Random randNumGen=新的Random();

而(listSize您的算法没有正确地查找素数,因此有些被删除,有些则没有

从我看到的情况来看,你在列表中添加了20个介于0和101之间的随机数,其中一些是素数,一些不是素数。然后根据索引和列表中的第一个数字乘以索引*迭代并删除这些数字

从外观上看,您正在尝试实现,但还没有完全正确

粗略地说,您需要从2迭代到101的平方根,并从列表中删除每个循环的所有倍数。这可以实现为两个
for
循环


(*)@Pelit Mamani确定了关键点-
remove(i)
使用索引。

除了“dave”的正确建议之外,还请注意,停下来想想有助于帮助:我对测试数组元素或索引感兴趣吗?最重要的是,由于列表的模糊性,它变得更加混乱。remove…remove(i)移除索引i处的元素,而remove((Integer)i)移除值“i”的第一个元素。您正在设置一个
ListIterator
,并且几乎没有使用它。我建议您重新编写循环以使用迭代器,特别是它的
remove()
方法。