Ⅰ 各位大哥幫我看看用java在數組中求出最大值和最小值為什麼粗錯
在數組中尋找最大值和最小值時,直接使用arr[arr.length-1]和arr[0]作為初始值可能會導致錯誤。正確的做法應該是首先初始化最小值為數組的第一個元素,最大值為數組的最後一個元素,然後遍歷數組進行比較。例如:
java
int min = arr[0];
int max = arr[arr.length-1];
for(int i = 1; i < arr.length; i++) {
if(arr[i] < min) {
min = arr[i];
}
if(arr[i] > max) {
max = arr[i];
}
}
System.out.println("最小值為" + min);
System.out.println("最大值為" + max);
這樣可以避免初始值選擇不當帶來的錯誤。同時,使用兩層循環確實會浪費資源,尤其是當數組較大時。單層循環即可完成任務,提高效率。
如果你的代碼中使用了兩層循環,例如:
java
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr.length; j++) {
if(arr[i] < arr[j]) {
min = arr[i];
max = arr[j];
}
}
}
這顯然是不必要的復雜,不僅效率低,還容易出錯。通過優化,可以大大提升代碼的性能和可讀性。
總之,尋找數組中的最大值和最小值時,應該避免不必要的復雜性和錯誤的選擇,採用合適的方法進行優化。
Ⅱ java利用數組求最大值,最小值,平均值,進
傳統的做法就是for循環, 通過循環比較得到最小值,最大值. 通過累加的和除以個數等於平均值
比較新的做法就是Java8 的流操作. 可以更方便快捷的得到最大,最小和平均值
參考代碼如下
importjava.util.Arrays;
importjava.util.IntSummaryStatistics;
importjava.util.stream.Collectors;
publicclassArrayDemo{
publicstaticvoidmain(String[]args){
Integer[]nums={6,5,7,8};
test1(nums);
System.out.println("----分割線---");
test2(nums);
}
//傳統的處理方法
publicstaticvoidtest1(Integer[]nums){
intmax=Integer.MIN_VALUE;
intmin=Integer.MAX_VALUE;
intsum=0;
for(Integernum:nums){
if(num>max){
max=num;
}
if(num<min){
min=num;
}
sum+=num;
}
doubleavg=sum*1.0/nums.length;
System.out.println("最大值:"+max);
System.out.println("最小值:"+min);
System.out.println("平均值:"+avg);
}
//Java8開始的stream操作
publicstaticvoidtest2(Integer[]nums){
IntSummaryStatisticsresults=Arrays.stream(nums).collect(Collectors.summarizingInt(e->e));
intmax=results.getMax();//獲取最大值
System.out.println("最大值:"+max);
intmin=results.getMin();
System.out.println("最小值:"+min);
doubleavg=results.getAverage();
System.out.println("平均值:"+avg);
}
}