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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 房宝彬 黑马帝   /  2011-12-20 14:35  /  4289 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 房宝彬 于 2011-12-20 19:22 编辑

public class array                        //取数组中的最大值
{
        public static void main(String[] args)
        {
                          int[] arr={99,66,3,1313,1315,6,};   // 定义数组长度

                          int max = arr[0];                             //声明 max的初始化,“arr[0]”这里是不是就是将数组里的0角标也就是99赋给了max?

                          for(int x=1;x<arr.length;x++)        //声明一个for循环,判断X<数组长度,也就是说x分别判断是否小于0.1.2.3.4.5.?

                        {
                                if(arr[x]>max)          // * 主要问题在这里, 这里的arr[x]表示什么意思? 本人新手,希望大牛们给予指导,谢谢。

                                         max = arr[x];
                        }


                                          System.out.println(max);
        }

}


该贴已经同步到 房宝彬的微博

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

19 个回复

倒序浏览
arr[x]是说将x添加到了数组中。于max做比较,想当于x和0做比较,那个大的话就max就是那个。
回复 使用道具 举报
宋双 黑马帝 2011-12-20 14:47:05
藤椅
x是变量,即从1~5.arr[x]就是依次将arr[1]~arr[5]与max做比较,然后取大的赋值

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
f64412300 发表于 2011-12-20 14:41
arr[x]是说将x添加到了数组中。于max做比较,想当于x和0做比较,那个大的话就max就是那个。 ...

arr[x]就是x添加到了数组中,那么X现在是多少? 1么?
1跟0去比较,0是什么?是0角标么? 那么是判断1分别<99.66.3.1313.1315.6么?
第一次循环结束if判断为假,那么x++,变成2了,这个2代表什么?
回复 使用道具 举报
你明白了arr[0]怎么就不明白arr[x]呢?0表示下表为0的元素,x表示下标为x的元素。

评分

参与人数 2技术分 +1 黑马币 +5 收起 理由
吴上储 + 1
房宝彬 + 5

查看全部评分

回复 使用道具 举报
public class array                        
{
        public static void main(String[] args)
        {
                          int[] arr={99,66,3,1313,1315,6,};   

                          int max = arr[0];                             是的,是将数组里的0角标(也就是99)赋给了max

                          for(int x=1;x<arr.length;x++)        //声明一个for循环(for循环表述形式:for循环一被执行...就在堆内存创建一个int类型的x,值为1.   这样读)。(判断X<数组长度,也就是说x分别判断是否小于0.1.2.3.4.5.?)不是的, .length是表示长度,arr.length就是指一维名为arr的数组的长度,是个确定的值。 如果不理解,那就可以把arr.length=6  代入,多看几遍就看懂了

                        {
                                if(arr[x]>max)          // * 主要问题在这里, 这里的arr[x]表示什么意思? ([]是一维,方括号内是角标,整体arr[x]就是arr内某个角标为x的数值。arr[x]在堆内,毕老师视频里画的有图)  本人新手,希望大牛们给予指导,谢谢。(本人也新手,同勉)

                                         max = arr[x];
                        }


                                          System.out.println(max);
        }

}

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
吴上储 + 1
房宝彬 + 1 赞一个!

查看全部评分

回复 使用道具 举报
侯伟浩 黑马帝 2011-12-20 14:50:42
7#
for(int x=1;x<arr.length;x++) 这句你理解错了,这里只是说循环的次数是从0到arr.length次。

点评

从1到arr.length次吧  发表于 2011-12-20 16:02
回复 使用道具 举报
这里的 int max = arr[0];只是将arr[0]的只赋给max,通过max进行和其它元素的依次比较,而不是arr[0]为最大值,这里只是给max一个值进行和其它数值比较的一个参考值。

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
吴上储 + 1
房宝彬 + 1

查看全部评分

回复 使用道具 举报
楼上的正解。
回复 使用道具 举报
房宝彬 黑马帝 2011-12-20 14:55:57
10#
侯伟浩 发表于 2011-12-20 14:48
你明白了arr[0]怎么就不明白arr[x]呢?0表示下表为0的元素,x表示下标为x的元素。 ...

那么这个时候 X 就是1。也就是 arr[x=66];然后用66.3.1313.1515.6 这些数去跟 99比较,然后选择最大的数,对吧?
回复 使用道具 举报
侯伟浩 黑马帝 2011-12-20 15:00:31
11#
房宝彬 发表于 2011-12-20 14:55
那么这个时候 X 就是1。也就是 arr[x=66];然后用66.3.1313.1515.6 这些数去跟 99比较,然后选择最大的数 ...

循环走一遍的时候x=1,就是arr[x]=arr[1]=66,然后用66和max去比较,然后选择大数,然后再循环第二次,这时x=2了,依此类推

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
admin + 1
房宝彬 + 1 3Q,明白了,顺便问下怎么结帖

查看全部评分

回复 使用道具 举报
常兆鹏 黑马帝 2011-12-20 15:03:50
12#
int[] arr={99,66,3,1313,1315,6,};   //这里不是定义数组长度,是将大括号中的数赋值给数组arr。

if(arr[x]>max) :上面已经将arr[0]的值赋给max,在这里比较arr[1]与max哪个最大,并将大的数赋给max,然后x=2 ,3,4,5时分别指数组中的3,1313,1315,6与max做比较,最终得到最大值。


评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
吴上储 + 1
房宝彬 + 1

查看全部评分

回复 使用道具 举报
侯伟浩 黑马帝 2011-12-20 15:05:27
13#
侯伟浩 发表于 2011-12-20 15:00
循环走一遍的时候x=1,就是arr[x]=arr[1]=66,然后用66和max去比较,然后选择大数,然后再循环第二次,这 ...

在你的帖子下面有个编辑,把你的帖子编辑成已解决就ok了
回复 使用道具 举报
public class array                        
{
        public static void main(String[] args)
        {
                          int[] arr={99,66,3,1313,1315,6,};   

                          int max = arr[0];                             // max的初始化,就是假定数组0角标的元素为最大值,将它赋给max.
                          for(int x=1;x<arr.length;x++)        //声明一个for循环,让max的值依次和其它元素比大小,

                        {
                                              if(arr[x]>max)                                  /* 这里的arr[x],就是数组中的其它元素,for循环的每个x的值正好和数组角标一致,
                                                               所以能取出数组中其它的的所有的值和max比大小。*/

                          max = arr[x];                              /*如果for循环取到的元素比当前的max值大,
                                                        就将本次循环中得对的大值赋给max,      以便进入下一次的比较             */
                                          }


                                          System.out.println(max);
        }

}

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
吴上储 黑马帝 2011-12-20 15:55:17
15#
public class array                        //取数组中的最大值
{
        public static void main(String[] args)
        {
                          int[] arr={99,66,3,1313,1315,6,};   // 定义数组长度

                          int max = arr[0];                             //声明 max的初始化,“arr[0]”这里是不是就是将数组里的0角标也就是99赋给了max?

                          for(int x=1;x<arr.length;x++)        //声明一个for循环,判断X<数组长度,也就是说x分别判断是否小于0.1.2.3.4.5.?
                                                          //arr.length 是数组的长度为6个 =6 但是数组的角标是从0开始的 x<arr.length x<6     
                                                                                                   //int x=1;x<arr.length;x++)  相当于x=1 且x<=5;arr[1]...arr[5];


                        {
                                if(arr[x]>max)          // * 主要问题在这里, 这里的arr[x]表示什么意思? 本人新手,希望大牛们给予指导,谢谢。
                                                    //给x做循环,arr[1]...arr[5];
                                                                                /*         arr[1]=66; >max=arr[0]=99 ?
                                                                                            arr[2]=3;
                                                                                             arr[3]=1313;
                                                                                            arr[4]=1315;
                                                                                             arr[5]=6;                    */


                                         max = arr[x];
                        }


                                          System.out.println(max);
        }

}
回复 使用道具 举报
武超 黑马帝 2011-12-20 17:38:16
16#
int[] arr={99,66,3,1313,1315,6,};定义的不仅仅是数组长度,而且还是各个元素的值,
arr[0]=99,arr[1]=63,arr[2]=3,......
arr[x]中x是1~5的变量,通过for()循环而改变x的值从而改变arr[x]的值,
if(arr[x]>max)
     max=arr[x];就是将比max大的数赋值给max。有一点你要注意,max这里面的具体意思是数值元素的最大值,开始的时候将arr[0]赋值给了max,然后依次的进行赋值、比较。可能你是看视频看混乱了,有定义max为下标的如:
  1. int max=0;      //此时定义的max其实是数组的下标
  2. for(int x=1;x<arr.length;x++)
  3. {
  4.         if(arr[max]<arr[x])
  5.                 max=x;
  6. }
  7. System.out.println(arr[max]);
复制代码
max=x表将arr[x]赋值给以下标为max的元素,输出的就是arr[max]。
回复 使用道具 举报
     因为之前定义了变量max来标记数组arr[0],也就是说我们假定arr[0]是数组中最大的数
if(arr[x]>max) ,这里是在循环遍历数组时,把每个值都跟假定的max这个值比较一下。如果发现
有比较max更大的值,那就把max的值标记为更大的那个 即: 下一句 max=arr[x].
回复 使用道具 举报
这种题也没什么要回答的,1.数组:数组的下标是从0开始,到数组长度减1      
                                    2.求数组中的最大值,将数组中的第一个元素看成是最大的也就是arr[0];用arr[0]去和数组中剩余的其他元素一一比较,借助for循环,arr[x]就是说x从1——5分别表示数组中剩下的元素了
                                    3.求最大值,其实语法看看就会明白,重要的也就是算法了,当你遇到题的时候不是马上就敲代码,而是想怎么解决问题,就像这道题中求最大值,其实就是种算法思想。
回复 使用道具 举报
arr[x]代表arr数组中的第x个元素,在该题中了就是从x=1开始,依次取出arr数组中的值和max作比较。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马