class Circle
{
private static double pi = 3.14;
private double radius;
public Circle (double r)
{
radius = r;
}
public static double compare(Circle[] cir)
{
int max = 0;
for(int x=1;x<cir.length;x++)
{
if(cir[x].radius>cir[max].radius)
max = x;
}
return cir[max].radius;
}
}
class Demo
{
public static void main(String[] args)
{
Circle cir[] = new Circle[3];
cir[0] = new Circle(1.0);
cir[1] = new Circle(2.0);
cir[2] = new Circle(4.0);
System.out.println(Circle.compare(cir));
}
}
1.0 2.0 4.0传给r,那每次r不都被重新赋值了么?怎么能比?
3 个解决方案
#1
lz还没有理解类与对象的关系。
Circle cir[] = new Circle[3];
cir[0] = new Circle(1.0);
cir[1] = new Circle(2.0);
cir[2] = new Circle(4.0);
这是cir是一个对象数组,不是一个对象,你new的这三次分别产生了3个对象,r是三个对象各自的属性,怎么会被覆盖了?
如果你按照下面的方法new才会出现覆盖。
cir[0] = new Circle(1.0);
cir[0] = new Circle(2.0);
cir[0] = new Circle(4.0);
Circle cir[] = new Circle[3];
cir[0] = new Circle(1.0);
cir[1] = new Circle(2.0);
cir[2] = new Circle(4.0);
这是cir是一个对象数组,不是一个对象,你new的这三次分别产生了3个对象,r是三个对象各自的属性,怎么会被覆盖了?
如果你按照下面的方法new才会出现覆盖。
cir[0] = new Circle(1.0);
cir[0] = new Circle(2.0);
cir[0] = new Circle(4.0);
#2
每次new都会生成一个新的对象 并且每个对象都有各自的r cir[0]、cir[1]、cir[2]的r不同
#3
其实是比了三次
实例化了三个对象,而不是一个,换句话说,Lz new了三次
cir[0] = new Circle(1.0);
cir[1] = new Circle(2.0);
cir[2] = new Circle(4.0);
实例化了三个对象,而不是一个,换句话说,Lz new了三次
#1
lz还没有理解类与对象的关系。
Circle cir[] = new Circle[3];
cir[0] = new Circle(1.0);
cir[1] = new Circle(2.0);
cir[2] = new Circle(4.0);
这是cir是一个对象数组,不是一个对象,你new的这三次分别产生了3个对象,r是三个对象各自的属性,怎么会被覆盖了?
如果你按照下面的方法new才会出现覆盖。
cir[0] = new Circle(1.0);
cir[0] = new Circle(2.0);
cir[0] = new Circle(4.0);
Circle cir[] = new Circle[3];
cir[0] = new Circle(1.0);
cir[1] = new Circle(2.0);
cir[2] = new Circle(4.0);
这是cir是一个对象数组,不是一个对象,你new的这三次分别产生了3个对象,r是三个对象各自的属性,怎么会被覆盖了?
如果你按照下面的方法new才会出现覆盖。
cir[0] = new Circle(1.0);
cir[0] = new Circle(2.0);
cir[0] = new Circle(4.0);
#2
每次new都会生成一个新的对象 并且每个对象都有各自的r cir[0]、cir[1]、cir[2]的r不同
#3
其实是比了三次
实例化了三个对象,而不是一个,换句话说,Lz new了三次
cir[0] = new Circle(1.0);
cir[1] = new Circle(2.0);
cir[2] = new Circle(4.0);
实例化了三个对象,而不是一个,换句话说,Lz new了三次