0
我有一個像這樣的家庭工作問題:如何將java中數組的值複製到不包含最小值和最大值的新數組中?
以下數據表示里氏震級數據。編寫一個程序來計算和打印任何有效地震數據的平均值。
將Richter值存儲在名爲quakeLevels的雙精度數組中。
不幸的是,您的地震儀有時會產生不可靠的讀數(如本例中的值10.1)。所以你決定拋出最大和最小的讀數。
你的程序應該做到以下幾點:
- 聲明並使用下面的數據初始化quakeLevels陣列。 {5.6,6.2,4.0,5.5,5.7,6.1,7.4,8.5,5.5,6.3,6.4,2.1,6.9,4.3,4.1,6.0,10.1}
- 確定數組中的最大值和最小值。
- 計算數組內容的平均值,不包括最大值和最小值。
- 打印數組中的值,但不包括最大值和最小值。
- 打印平均值。
填寫以下代碼:
我已經試過這個問題,下面的代碼,但我新陣列越來越空值。
public class QuakeLevels {
public static void main(String[] args) {
Double quakeLevels[] = { 5.6, 6.2, 4.0, 5.5, 5.7, 6.1,7.4, 8.5, 5.5, 6.3, 6.4, 2.1, 6.9, 4.3, 3.1, 7.0, 10.1 };
Double minQuakeLevel = Double.MAX_VALUE;
Double maxQuakeLevel = Double.MIN_VALUE;
double totalQuakeLevels =0.0;
double avgQuakeLevels =0.0;
Double[] newQuakeLevels = new Double[(quakeLevels.length-2)]; //array excluding min and max value from the original
for(int i=0;i<quakeLevels.length;i++){
totalQuakeLevels+=quakeLevels[i];
if(quakeLevels[i]<minQuakeLevel) {
minQuakeLevel=quakeLevels[i];
}
if(quakeLevels[i]>maxQuakeLevel){
maxQuakeLevel =quakeLevels[i];
}
}
avgQuakeLevels = ((double)totalQuakeLevels-(minQuakeLevel+maxQuakeLevel))/(quakeLevels.length-2); // Excluding min and max Quake Levels to calculate average
System.out.printf("%s%.1f\n","Average Quake Level= ",avgQuakeLevels);
System.out.print("The new quake level:");
for(int i=0;i<quakeLevels.length-2;i++){
if(newQuakeLevels[i]!=minQuakeLevel && newQuakeLevels[i]!=maxQuakeLevel){
quakeLevels[i]=newQuakeLevels[i];
System.out.printf("%6s",newQuakeLevels[i]);
}
}
System.out.println("");
}
}