我已经处理了这个问题一个星期,虽然我找到了一些答案,但似乎没有一个能解决我的程序问题。
我一直收到这条消息:
Note: Triangle.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
以下是代码:
import java.util.*;
public class Triangle
{
public double a;
public double b;
private double c;
private ArrayList btsarr;
private static int numMade = 0;
public Triangle()
{
this.a = 3;
this.b = 4;
this.c = 5;
this.btsarr = new ArrayList();
this.btsarr.add(this.c + ""); //adding it as a String object
Triangle.numMade++;
}
public Triangle(double x1, double x2, double x3)
{
this.a = x1; //specs say no data validation necessary on parameters
this.b = x2;
this.c = x3;
this.btsarr = new ArrayList();
this.btsarr.add(this.c + "");
Triangle.numMade++;
}
public void setC(double x)
{
if (x <= 0)
{
System.out.println("Illegal, can't set c to 0 or negative");
}
else
{
this.c = x;
this.btsarr.add(this.c + "");
}
}
public double getC()
{
return this.c;
}
public void showAllCs()
{
System.out.println(this.btsarr);
}
public boolean isRightTriangle()
{
if (this.a*this.a + this.b*this.b == this.c*this.c)
return true;
else
return false;
}
public static int getNumMade()
{
return Triangle.numMade;
}
}
非常感谢任何帮助,谢谢!
答案 0 :(得分:4)
问题是你没有为ArrayList指定一个类型,因此没有编译时检查是否要将整数插入到String ArrayList中。由于这将是一个“不安全的操作”,你会得到警告。
要解决此问题,请将private ArrayList btsarr;
替换为private ArrayList<String> btsarr;
,将this.btsarr = new ArrayList();
替换为this.btsarr = new ArrayList<String>();
。
通常,在实例化它们时,应始终指定要包含的类型的对象,如ArrayList和HashMap(或任何其他Java集合)。
答案 1 :(得分:1)
这些只是警告伙伴,编译成功。 您可以毫无问题地运行程序。
如果您想抑制此类警告,请使用以下注释
@SuppressWarnings("unchecked"); //above the method definition.