//定义一个整型数组,求出数组最大值和最小值 并输出结果
public static void minMax(){
int oldArr[] = {1,3,4,5,6,9,6,6,2,5,4,7,6,7,8,5};
int minNum = 0; //最小值
int maxNum = 0; //最大值
for(int i = 0, j = 1; i < oldArr.length ; i ++ ){
if(oldArr[i] > maxNum){
maxNum = oldArr[i];
}
if(minNum == 0){
if(oldArr[i] < oldArr[j]){
minNum = oldArr[i];
}else{
j++;
}
}
}
System.out.println("最小:"+minNum+"最大:"+maxNum);
}
不用任何类、函数,直接用最原始的写法。
int minNum = oldArr[0];
int maxNum = oldArr[0];
for (int i = 1; i < oldArr.length; i++) {
if (minNum > oldArr[i]) {
minNum = oldArr[i];
}
if (maxNum > oldArr[i]) {
maxNum = oldArr[i];
}
}
第一,没看懂为何要j这个变量
第二,BUG!假设数组是{-1,-2,-3},你可以试试看运行你原先的程序。总之,查找数组最大最小的时候,初始的min/max绝对不要设置成0,而是array[0]。
int oldArr[] = {1,3,4,5,6,9,6,6,2,5,4,7,6,7,8,5};
int max = oldArr[0],min = oldArr[0];
for(int i = 0;i < oldArr.length;i++ ){
if(oldArr[i] > max)max = oldArr[i];
if(oldArr[i] < min)min = oldArr[i];
}
System.out.println("最大值"+max);
System.out.println("最小值"+min);
}
这应该是最简单的了!
{
int oldArr[] = {1, 3, -1, 4, 5, 6, 9, 6, 6, 2, 5, 4, 7, 6, 7, 8, 5};
Arrays.sort(oldArr);
System.out.println(oldArr[0] + " " + oldArr[oldArr.length - 1]);
}
public static void minMax(int[] array) {
int min = array[0];
int max = array[0];
for (int i = 1; i < array.length; i++) {
if ( array[i] > max) {
max = array[i];
}
if ( array[i] < min) {
min = array[i];
}
}
System.out.println("min: " + min + " max: " + max);
}
所以第2个if可以写成else if,当这个数是最大数时,可以少做1次判断public static void minMax(int[] array) {
int min = array[0];
int max = array[0];
for (int i = 1; i < array.length; i++) {
if ( array[i] > max) {
max = array[i];
}
else if ( array[i] < min) {
min = array[i];
}
}
System.out.println("min: " + min + " max: " + max);
}
但是如果没有索引为0的key呢?我还不知道java里有没有象php一样的关联数组,so……