黑马程序员技术交流社区
标题:
学习中的疑惑,求解答!
[打印本页]
作者:
郑广昌
时间:
2012-12-29 11:27
标题:
学习中的疑惑,求解答!
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 max;
}
}
class tc
{
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(3.0);
System.out.println("最大半径值是:"+Circle.compare(cir));
}
}
运行结果是什么?我的结果怎么是2.0呢?
作者:
马志军
时间:
2012-12-29 11:43
因为返回值是return max;,返回的是最大的那个下标,return cir[max].radius;就可以返回最大的半径了
作者:
Tom
时间:
2012-12-29 11:50
楼上正解。
作者:
李海鹏
时间:
2012-12-29 11:54
if (cir[x].radius>cir[max].radius)看这个,当x=1时成立,max=1,当x=2时成立,max=2,当x=3时数组就为空了所以不成立,compare方法返回max,这时max=2,因为是double类型的,所以结果就是2.0嘛
作者:
王进亮
时间:
2012-12-29 12:07
public static double compare(Circle[] cir) {
int max = 0;
for (int x = 1; x <cir.length; x++) {
/*max=0;
* 第一次判断cir[1].radius>cir[0].radiur 即2.0>1.0吗 是 max=1;(max=x)
* 第二次判断cir[2].radius>cir[1].radiur 即3.0>2.0吗 是 max=2;(max=x)
*/
if (cir[x].radius > cir[max].radius){
max = x;
}
}
//这里定义的是double类型,所以你要返回的也是double类型,但你返回的max是int
//所以系统会给你自动提升类型。所以你返回的是2.0
return max;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2