黑马程序员技术交流社区
标题:
遍历数组求最值
[打印本页]
作者:
李贵栋
时间:
2015-3-14 00:46
标题:
遍历数组求最值
/*
需求:定义一个数组,求出元素中的最大值,和最小值
*/
class Test2 {
public static void main(String[] args) {
int [] arr ={17,23,45,234,256,23,27,3356,23};
int max =getMax(arr);
int min =getMin(arr);
System.out.println("数组中元素最大的值max为:"+max);
System.out.println("数组中元素最小的值min1为:"+min);
}
public static int getMax(int[] arr){
int max=arr[0];
for(int x=5;x<arr.length;x++) { //这里的初始化值x试了等于0,1,2,5
if(arr[x]>max) {
max= arr[x];
}
}
return max;
}
public static int getMin(int [] arr) {
int min = arr[0];
for(int y=5;y<arr.length;y++) {
if(arr[y]<min) {
min = arr[y];
}
}
return min;
}
}
复制代码
求最值方法里for循环的初始化语句 x 从0或者1或者2开始都不影响结果是怎么回事?
又试了单独遍历已定义的数组,从0开始,全部元素输出,从1或者2或者3开始就会少元素
求大神给个详细执行步骤
作者:
李贵栋
时间:
2015-3-14 01:34
太晚了没人回:L:L
作者:
星河
时间:
2015-3-19 21:25
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角标位开始打印。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2