【java】学习的一个最大值的问题。

#在java学习中,遇到这样一个问题,求最值,不知道这样写的两种方式哪种是对的,有大牛愿意给详解一下么。

付代码如下
#【1】
public class MaxArray {
public static void main(String[] args) {
int[] arr = new int[10];

    for(int i = 0;i<arr.length;i++){
        arr[i] = (int)(Math.random()*100);
        System.out.println(arr[i]);
    }
    int max = arr[0];
    for(int i = 1;i<arr.length;i++){
        if(max<arr[i]){
            max = arr[i];
        }
    }
    System.out.println("Max="+max);
    
}

}

【2】
public class MaxArray {
public static void main(String[] args) {
int[] arr = new int[10];
int max = 0;

    for(int i = 0;i<arr.length;i++){
        arr[i] = (int)(Math.random()*100);
        System.out.println(arr[i]);
        if(max<arr[i]){
            max=arr[i];
        }
    }
    System.out.println("max="+max);
}

}

肯定选第一种啊。max默认为0,不一定就是最小值啊。万一arr数组原始是负数呢。
max初始化为第一个元素。可以保证初始值是数组元素范围的值

第一个更严谨一点

都对, 不过第二种效率更高

第一种是分两步,一次产生数据,第二次再进行数据比较
第二种就一步, 边产生边比较

如果数组里的值全为负数,第二个就会输出0

第一种是对的,第二种数组里的所有值小于0那就不正确了

直接从小到大排个序,取最后一个就行了

Arrays.sort(arr);
int max = arr[arr.length - 1];

Java中random()代表返回一个[0,1)的浮点数。 所以 math.random()*100代表返回一个[0,100)的浮点数。