A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙飞 中级黑马   /  2012-6-26 19:45  /  1713 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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));
        }
}

6 个回复

倒序浏览
  if(cir[x].radius>cir[max].radius)//这里为什么要加上.radius啊?求详解   
/*因为cir[x]是圆的对象,但是要比较的是圆的对象的半径,
  所以要先获取到半径,然后在比较,获取半径就是对象.半径,
也就是cir[x].radius     
回复 使用道具 举报
本帖最后由 陈淑飞 于 2012-6-26 20:11 编辑


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


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

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

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

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

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

关于定义类类型数组这点还是不太明白,又不知道从何问起?能把回路详细说一下吗?
回复 使用道具 举报
第2章__Java基础知识--对象数组及二维数组.doc

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

看完后,你就会明白了。呵呵。
回复 使用道具 举报
孙飞 中级黑马 2012-6-26 21:14:25
7#
陈淑飞 发表于 2012-6-26 20:36
第2章__Java基础知识--对象数组及二维数组.doc

百度下

看过后明白了,谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马