求教java高手关于java的问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 06:20:21
package jenut.com;
import java.math.BigInteger;
import java.util.*;
public class Factorial4
{
protected static ArrayList table=new ArrayList();
static
{
table.add(BigInteger.valueOf(1));
}
public static synchronized BigInteger factorial(int x)
{
if (x<0)
{
throw new IllegalArgumentException("x must be non-negative!");
}
for (int size=table.size();size<=x;size++)
{
BigInteger lastfact=(BigInteger)table.get(size-1);
BigInteger nextfact=lastfact.multiply(BigInteger.valueOf(size));
table.add(nextfact);
}
return (BigInteger) table.get(x);
}
public static void main(String[] args)
{
for (int i=0;i<=50;i++)
{
System.out.println(i+"!="+factorial(i));
}
}
}

小弟新手,

在编译这串代码的过程中出现了下面的提示:

注意:factorial4.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请

没有错。

Factorial4.java:8: 警告:[unchecked] 对作为普通类型 java.util.ArrayList 的成员的
add(E) 的调用未经检查
table.add(BigInteger.valueOf(1));
^
Factorial4.java:20: 警告:[unchecked] 对作为普通类型 java.util.ArrayList 的成员
的 add(E) 的调用未经检查
table.add(nextfact);
^

你的JDK版本是1.5,1.5是支持泛型的,但你的写法不是用泛型的写法,所以编译的时候出了警告。
将你的protected static ArrayList table=new ArrayList(); 改成
protected static ArrayList<BigInteger> table=new ArrayList<BigInteger>();
可以避免警告