黑马程序员技术交流社区

标题: 练习题疑惑 [打印本页]

作者: 孙飞    时间: 2012-6-26 19:45
标题: 练习题疑惑
本帖最后由 feigecal 于 2012-6-26 21:15 编辑

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)//这里为什么要加上.radius啊?求详解                               
                                                       max = x;
                }

                return cir[max].radius;
        }
}
class Test2
{
        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));
        }
}
作者: 李伟    时间: 2012-6-26 19:53
  if(cir[x].radius>cir[max].radius)//这里为什么要加上.radius啊?求详解   
/*因为cir[x]是圆的对象,但是要比较的是圆的对象的半径,
  所以要先获取到半径,然后在比较,获取半径就是对象.半径,
也就是cir[x].radius     
作者: 陈淑飞    时间: 2012-6-26 20:10
本帖最后由 陈淑飞 于 2012-6-26 20:11 编辑


一、功能分析
你这个代码是干嘛的,很显示是 找所有圆中,最大半径的圆,它的最大半径是多少。


二、逻辑判断
比较圆的半径谁最大,两两比较,比较是的圆的半值,肯定是比较两个double 值。

if(cir[x].radius>cir[max].radius)//这里为什么要加上.radius啊?求详解

你把这里的 .radius 去掉后,变成啥了?
cir[x]>cir[max]  这是比较两个圆的半径吗? 这里比较两圆对象的首位地址值,没有意义呢。
与你初衷已经相违背了,不是吗?

作者: 郑文博    时间: 2012-6-26 20:12
只有radius才是真正要传入的数据进行比较的,不加.radius难道要比较[]里的东西吗? []中只是圆的标号,没有比较的概念。
作者: 孙飞    时间: 2012-6-26 20:23
陈淑飞 发表于 2012-6-26 20:10
一、功能分析
你这个代码是干嘛的,很显示是 找所有圆中,最大半径的圆,它的最大半径是多少。

关于定义类类型数组这点还是不太明白,又不知道从何问起?能把回路详细说一下吗?
作者: 陈淑飞    时间: 2012-6-26 20:36
第2章__Java基础知识--对象数组及二维数组.doc

百度下
http://wenku.baidu.com/view/01b4a23e580216fc700afd3f.html

看完后,你就会明白了。呵呵。
作者: 孙飞    时间: 2012-6-26 21:14
陈淑飞 发表于 2012-6-26 20:36
第2章__Java基础知识--对象数组及二维数组.doc

百度下

看过后明白了,谢了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2