ArrayList的不安全或未经检查的操作

Tim*_*imo 7 java compiler-errors arraylist

我被分配制作一个程序,在0-25之间获得100个随机整数并将它们存储在一个数组中.然后,我必须要求两种方法来分割平均值和赔率(非常典型).所以我尝试了ArrayList的东西(我开始学习它),看起来很好(我在线跟踪教程和事情),直到遇到这个: Unit8.java使用未经检查或不安全的操作

我的代码是这样的:

    import java.util.*;
    import java.awt.*;

    public class Unit8
    {
public static void main (String [] args)
{
    //create an array for original 100 integers
    //create a 2D array for evens and odds
    //split them up using 2 methods

    int[] originalArray = new int[100];
    ArrayList even = new ArrayList(1);
    ArrayList odd = new ArrayList(1);

    for (int x = 0; x < originalArray.length; x++)
    {
        originalArray[x] = (int)(Math.random() * 25);
    }

    evensDivider(originalArray, even);
    oddsDivider(originalArray, odd);
}

public static void evensDivider (int[] e, ArrayList even)
{


    for (int y = 0; y < e.length; y++)
    {
        if (e[y]%2 == 0)
            even.add(e[y]);
    }

    System.out.println("The evens are: " + even);
}

public static void oddsDivider (int[] o, ArrayList odd)
{


    for (int z = 0; z < o.length; z++)
    {
        if (o[z]%2 == 1)
            odd.add(o[z]);
    }
}
Run Code Online (Sandbox Code Playgroud)

}

错误发生在: even.add(e[y]);odd.add(o[z]);

请帮我解决这个问题,我已尽力使其清晰易懂.

Roh*_*ain 14

这是因为你使用ArrayListraw type.而且你正在为它添加一个特定的类型.

原始类型ArrayList期望Object类型的元素.如果添加任何其他类型,则编译器不会确切地知道您要存储的类型.所以,它会让你unchecked or unsafe operations警告你,你可能做错了什么.

你最好创建一个GenericArrayList: -

List<Integer> evenNumbers = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)

另外,在method签名中更改它: -

public static void evensDivider (int[] e, List<Integer> evenNumbers)
Run Code Online (Sandbox Code Playgroud)

PS: - 你应该总是有一个参考,interface type如果你有一个.我的意思是用来List代替ArrayList