Java 链表迭代器添加的数字太多

Java 链表迭代器添加的数字太多,java,listiterator,Java,Listiterator,我为我的Java类编写了一个程序,但我似乎不知道它做错了什么。我用25个介于1和100之间的随机整数填充LinkedList。然后我对列表进行排序,并输出总和和平均值。然后我去掉奇数并输出新列表的总和和平均值。然而,当我做最后的计算时,它似乎也添加了原始列表中最大的数字。如果第一个列表中的最大数字为偶数,则将其相加两次 import java.util.Collections; import java.util.Random; import java.util.List; import java

我为我的Java类编写了一个程序,但我似乎不知道它做错了什么。我用25个介于1和100之间的随机整数填充LinkedList。然后我对列表进行排序,并输出总和和平均值。然后我去掉奇数并输出新列表的总和和平均值。然而,当我做最后的计算时,它似乎也添加了原始列表中最大的数字。如果第一个列表中的最大数字为偶数,则将其相加两次

import java.util.Collections;
import java.util.Random;
import java.util.List;
import java.util.LinkedList;
import java.util.ListIterator;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Collection;
import java.util.*;


public class randomNumberCollection
{
public static void main(String[] args)
{
    int count = 0;

    //Create LinkedList object
    LinkedList<Integer> numList = new LinkedList<Integer>();

    Integer nextNum = null;

    for (int counter = 0; counter < 25; counter ++)
    {
        nextNum = new Integer((int)(Math.random() * 100));
        numList.add(nextNum);
    }
    //output random number LinkedList unsorted
    System.out.printf("Unsorted -- \n" + "Here are the numbers: \n" + numList);
    System.out.println();
    System.out.println();

    //Sort LinkedList
    Collections.sort(numList);
    System.out.printf("Sorted -- \n" + "Here are the numbers: \n" + numList);
    System.out.println();

    //Output sorted list sum and average
    ListIterator<Integer> iterator = numList.listIterator();
    while (iterator.hasNext())
        count += ((Integer) iterator.next()).intValue();

    System.out.printf("The sum of the numbers is %d and the average is %.2f ", count, (double) count / numList.size());
    System.out.println();

    ListIterator <Integer> iterator2 = numList.listIterator();
    int listElement = 0;

    while(iterator2.hasNext())
    {
        listElement = (Integer)iterator2.next();
        if (listElement %2 == 1)
        {
            iterator2.remove();
        }
    }

    ListIterator<Integer> iterator3 = numList.listIterator();
    while (iterator3.hasNext())
        listElement += ((Integer) iterator3.next()).intValue();

    System.out.println();
    System.out.printf("With the odd numbers removed -- \n" + "Here are the numbers: \n" + numList);
    System.out.println();
    System.out.printf("The sum of the numbers is %d and the average is %.2f ", listElement, (double) listElement / numList.size());
    }


}
import java.util.Collections;
导入java.util.Random;
导入java.util.List;
导入java.util.LinkedList;
导入java.util.ListIterator;
导入java.util.ArrayList;
导入java.util.Iterator;
导入java.util.Collection;
导入java.util.*;
公共类随机数集合
{
公共静态void main(字符串[]args)
{
整数计数=0;
//创建LinkedList对象
LinkedList numList=新建LinkedList();
整数nextNum=null;
用于(整数计数器=0;计数器<25;计数器++)
{
nextNum=新整数((int)(Math.random()*100));
numList.add(下一个);
}
//未排序的输出随机数链接列表
System.out.printf(“未排序--\n”+”这里是数字:\n”+numList);
System.out.println();
System.out.println();
//排序链接列表
Collections.sort(numList);
System.out.printf(“排序--\n”+”这里是数字:\n”+numList);
System.out.println();
//输出排序列表的总和和平均值
ListIterator迭代器=numList.ListIterator();
while(iterator.hasNext())
count+=((整数)迭代器.next()).intValue();
System.out.printf(“数字之和是%d,平均值是%.2f”,count,(double)count/numList.size());
System.out.println();
ListIterator迭代器2=numList.ListIterator();
int-liselement=0;
while(iterator2.hasNext())
{
listElement=(整数)迭代器2.next();
如果(列表元素%2==1)
{
迭代器2.remove();
}
}
ListIterator迭代器3=numList.ListIterator();
while(iterator3.hasNext())
listElement+=((整数)迭代器3.next()).intValue();
System.out.println();
System.out.printf(“删除奇数后--\n”+“以下是数字:\n”+numList);
System.out.println();
System.out.printf(“数字之和为%d,平均值为%.2f”,listElement,(double)listElement/numList.size());
}
}

迭代(排序)列表以删除奇数后,
liselement
保存(排序)列表最后一个元素的值

在列表的最后一次迭代之前,需要将
listElement
重置为零

最好有一个单独的方法来遍历列表,并返回列表中整数的总和。这将减少代码重复

您也不需要对
Integer
执行所有强制转换。因为
ListIterator
是一个,编译器知道迭代器的
next
方法返回
Integer
s