当前位置: 首页 > 知识库问答 >
问题:

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

葛承德
2023-03-14

我有这样的家庭作业问题:

以下数据表示地震的里氏标度数据。编写一个程序来计算和打印任何有效地震数据的平均值。

将里氏震级值存储在名为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个答案

赵俊远
2023-03-14

我认为你设置了错误的数组。你覆盖了原来的数组,但是你没有写新的数组。

试试这个:

而不是

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

把这个

if(quakeLevels[i]!=minQuakeLevel && quakeLevels[i]!=maxQuakeLevel){
      newQuakeLevels[i]=quakeLevels[i];
 类似资料:
  • 问题内容: 我的代码没有给出错误,但是没有显示最小值和最大值。代码是: 我是否需要system.out.println()来显示它,否则返回应该起作用吗? 问题答案: 您正在调用方法,但不使用返回的值。

  • 问题内容: 我想输出二维数组的最大值和最小值。Max可以很好地工作,但是即使在数组中没有零的情况下min也总是输出零。在本例中,我设置为99以防止较小的机会在数组中获得零。继承人完整代码: 问题答案: 由于您在中选择随机值的方式,不会存在小于零的值- 但也无法保证任何值都将恰好为零。但是,您将初始化为零,因为这是数组元素的默认值;没有什么比这更小了,所以答案总是零。 您应该在标记为“查找最小值”的

  • 这是一个非常基本的算法(不能再简单了),但我被难住了。我们有一个元素数组,我们必须确定最小值和最大值。 通常的方法是遍历数组,找出最小值和最大值,即2n比较。 稍微有效的方法是首先对数组的连续元素进行比较,以确定任意两个元素的最大值和最小值(N/2比较)。我们现在有n/2 min和n/2 max元素。现在我们可以在n/2+n/2+n/2(前一步)=3/2*n或1.5n中得到最终的max和min 那

  • 计算newArr数组所有对象中arr二维数组,比较后返回其中的[[最小值,最小值],[最大值,最大值]]; 要这种结果[[39.867638888888884, 115.39333333333333], [50.97152777777777, 120.31527777777778]]

  • 本文向大家介绍写一个获取数组的最大值、最小值的方法相关面试题,主要包含被问及写一个获取数组的最大值、最小值的方法时的应答技巧和注意事项,需要的朋友参考一下 es6

  • 主要内容:普通算法,分治算法程序中,我们经常使用数组(列表)存储给定的线性序列(例如 {1,2,3,4}),那么如何查找数组(序列)中的最大值或者最小值呢? 查找数组(序列)中最大值或最小值的算法有很多,接下来我们以 {3,7,2,1} 序列为例讲解两种查找最值的算法,一种是普通算法,另一种是借助 分治算法解决。 普通算法 普通算法的解决思路是:创建两个变量 max 和 min 分别记录数组中的最大值和最小值,它们的初始值都