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
这是因为你使用ArrayList与raw 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