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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李贵栋 中级黑马   /  2015-3-14 00:46  /  1216 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2.         需求:定义一个数组,求出元素中的最大值,和最小值
  3. */

  4. class Test2 {
  5.         public static void main(String[] args) {
  6.                 int [] arr ={17,23,45,234,256,23,27,3356,23};
  7.                 int max =getMax(arr);
  8.                 int min =getMin(arr);
  9.                         System.out.println("数组中元素最大的值max为:"+max);
  10.                         System.out.println("数组中元素最小的值min1为:"+min);
  11.         }
  12.         public static int getMax(int[] arr){
  13.                 int max=arr[0];
  14.                         for(int x=5;x<arr.length;x++) {     //这里的初始化值x试了等于0,1,2,5
  15.                                 if(arr[x]>max) {
  16.                                 max= arr[x];
  17.                         }
  18.                 }
  19.                 return max;
  20.         }

  21.         public static int getMin(int [] arr) {
  22.                 int min = arr[0];
  23.                         for(int y=5;y<arr.length;y++) {
  24.                                 if(arr[y]<min) {
  25.                                         min = arr[y];
  26.                         }
  27.                 }
  28.                 return min;
  29.         }
  30. }
复制代码

求最值方法里for循环的初始化语句 x 从0或者1或者2开始都不影响结果是怎么回事?

又试了单独遍历已定义的数组,从0开始,全部元素输出,从1或者2或者3开始就会少元素

求大神给个详细执行步骤

2 个回复

倒序浏览
太晚了没人回:L:L
回复 使用道具 举报
int [] arr ={17,23,45,234,256,23,27,3356,23};
求最值方法里for循环的初始化语句 x 从0或者1或者2开始都不影响结果是因为
1、在求最大值时,因为你设定的变量 max 的初始化值为arr[0],当for循环的初始化语句 x =0,首先比较的是max和
     arr[0],因为max 的初始化值为arr[0],所以两个值是相同的,这样的比较很没意义,所以当你设定的变量
     int max=arr[0];时,for循环的初始化语句 x 从0或者1开始都是不影响结果的。      而当x从2或者5开始不影响结果,是因为你设定的这个数组的问题,在你设定的这个数组中,最大值的角标为7,
      所以只要在for循环中有数组中角标为7的数参与比较,就能取得正确的最大值,如当 x=5,那么for循环取最大值
     就相当于求数组int[] arr1={17,23,27,3356,23}的最值,结果都为 max=3356, 如果将上面的数组改为int [] arr ={17,5555,45,234,256,23,27,3356,23};
     那么 x 从0或者1开始求得的最值为 5555,而从5开始求得的最值为3356,。
2、求最小值时不影响结果原因跟上面一样,也是因为你设定的这个数组的问题,初始化最小值就是这个数组的最小值,所以无论x从哪里开始,最小值正确。
而打印数组时,x=0是从数组的0角标位开始打印,x=1是从1角标位开始打印。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马