日期:2014-05-20  浏览次数:20730 次

还是一个简单的数组问题

public class Triangle {
 double area;
int height;
int length;
void setArea()
{
area=(height*length)/2;
}
public static void main(String[] args)
{
int x=0;
Triangle[] ta = new Triangle[4];//申明好了的数组
while(x<4)
{
ta[x] = new Triangle();//为什么还要添加这一句不是有上面的数组申明好了吗
ta[x].height=(x+1)*2;
    ta[x].length=x+4;
ta[x].setArea();
System.out.print("triangle"+x+", area");
System.out.println("="+ta[x].area);
x=x+1;
}
int y=x;
x=27;
Triangle t5 =ta[2];
ta[2].area=343;
System.out.print("y="+y);
System.out.println(", t5 area ="+ t5.area);

}
}

------解决方案--------------------
如果你在这句Triangle[] ta = new Triangle[4];// 申明好了的数组
下面写System.out.println(ta[0]);
将输出null。
要么开始这么声明:
Triangle[] ta = {
new Triangle(),
new Triangle(),
new Triangle(),
new Triangle()};
------解决方案--------------------
声明好的数组是空间 是空的 还要创建对象 就是new了 把新的对象放进声明好的数组中去.
------解决方案--------------------
你声明的是数组,又不是Triangle对象.
另外,
void setArea()
{
    area=(height*length)/2;
}
应该是get方法干的事情.
再另外,
area=(height*length*1.0)/2;