#在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)的浮点数。