如何将java中数组的值复制到一个新的数组中,不包括最小值和最大值?

时间:2012-12-24 08:19:44

标签: 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,3.1,7.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("");
        }
    }

1 个答案:

答案 0 :(得分:0)

我认为你正在设置错误的数组。你正在覆盖原始数组,但是你没有编写新数组。

试试这个:

而不是

if(newQuakeLevels[i]!=minQuakeLevel && newQuakeLevels[i]!=maxQuakeLevel){
      quakeLevels[i]=newQuakeLevels[i];

把这个

if(quakeLevels[i]!=minQuakeLevel && quakeLevels[i]!=maxQuakeLevel){
      newQuakeLevels[i]=quakeLevels[i];