Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将for循环中的数组结果保存到变量_Java_Arrays_Average - Fatal编程技术网

Java 将for循环中的数组结果保存到变量

Java 将for循环中的数组结果保存到变量,java,arrays,average,Java,Arrays,Average,我有一个赋值,在一个整数数组中我应该有6个元素,程序应该找到数组中最高和最低的元素,省略这两个元素,然后找到其余四个元素的平均值。到目前为止,我的程序能够找到该数组中的最低和最高数字,并且能够忽略它,但是,我似乎无法将这些结果从循环保存到变量,以便开始计算平均值。代码是 int bucky[] = { 4, 6, 8, 19, 199, 400 }; int hello = 0; int max = 0; for (int i = 0; i < bucky.length; i++) {

我有一个赋值,在一个整数数组中我应该有6个元素,程序应该找到数组中最高和最低的元素,省略这两个元素,然后找到其余四个元素的平均值。到目前为止,我的程序能够找到该数组中的最低和最高数字,并且能够忽略它,但是,我似乎无法将这些结果从循环保存到变量,以便开始计算平均值。代码是

int bucky[] = { 4, 6, 8, 19, 199, 400 };
int hello = 0;
int max = 0;

for (int i = 0; i < bucky.length; i++) {
    if (bucky[i] > max) {
        max = bucky[i];
    }
}
System.out.println("Max number is " + max);

int min = 0;
int j = 1;
for (int i = 0; i < bucky.length; i++) {
    if (bucky[i] < bucky[j]) {
        min = bucky[i];
        j = i;
    }
}
System.out.println("min number is " + min);

System.out.print("{");
for (int i = 0; i < bucky.length; i++) {
    if (bucky[i] != max) {
        if (bucky[i] != min) {
            System.out.print(" " + bucky[i]);
        }
    }
}
System.out.print("}");
intbucky[]={4,6,8,19,199,400};
int hello=0;
int max=0;
对于(int i=0;i最大值){
max=bucky[i];
}
}
System.out.println(“最大数量为”+Max);
int min=0;
int j=1;
对于(int i=0;i
到目前为止,它打印出了
{6 8 19 199}
。我希望能够将它们保存在变量中并计算平均值。任何帮助都将不胜感激。

int sum=0;
 int sum=0;
 for (int i=0 ;i< arr.length;i++) {
   if(arr[i]!=max && arr[i]!=min) {
     sum=sum+arr[i];
  } 
}

int average=sum/(arr.length-2)
对于(int i=0;i
你的成功率达到了90%。你只需要朝正确的方向轻推一下

您已经知道如何使用此语句从最高值和最低值筛选结果(重写为压缩嵌套的
if
s):

这是最难的部分。您现在需要的:

  • 计数器,用于告诉您实际要添加多少值。类似于
    adjustedTotal
    。只有当数字不是最小值或最大值时,才能添加到此计数器

  • 一个简单的
    sum
    变量,适当初始化,从
    bucky[i]
    中获取值,以便
    bucky[i]!=马克斯和巴基[i]!=最小值


    • 这里有一个简单的程序,可以实现您的目标

      如果所有元素都具有相同的值,会发生什么情况

      int[] input = {0,1,2,3,4,5};
      
      int max = input[0];
      int min = input[0];
      int sum = 0;
      
      for(int i : input){
          sum += i;
          if(i < min){
              min = i;
          }else if(i > max){
              max = i;
          }
      }
      
      System.out.println("sum for input is : " + sum);
      System.out.println("highest value element is : " + max);
      System.out.println("lowest value element is : " + min);
      System.out.println("sum excluding extreme elements is : " + (sum - min -max));
      
      // have cast the result as a float as i dont know if average should be truncated or not
      System.out.println("average excluding extreme elements is : " + ((float)(sum - min -max)/(input.length-2)));
      
      int[]输入={0,1,2,3,4,5};
      int max=输入[0];
      int min=输入[0];
      整数和=0;
      for(int i:输入){
      总和+=i;
      如果(imax){
      max=i;
      }
      }
      System.out.println(“输入的总和为:“+sum”);
      System.out.println(“最大值元素为:“+max”);
      System.out.println(“最小值元素为:“+min”);
      System.out.println(“不包括极端元素的总和为:”+(总和-最小-最大));
      //将结果转换为浮点,因为我不知道是否应该截断平均值
      System.out.println(“排除极端元素的平均值为:+((浮点)(总和-最小值-最大值)/(输入.长度-2));
      
      您可以定义一个名为sum的变量,就像上面提到的Makoto一样

      另外,我想指出,计算min的代码有问题

      举个例子,

      假设int[]数组如下所示:

      int bucky[] = { 6, 4, 8, 19, 400,199 };
      
      使用下面的代码:

          int min = 0;
          int j = 1;
          for (int i = 0; i < bucky.length; i++) {
              if (bucky[i] < bucky[j]) {
                  min = bucky[i];
                  j = i;
              }
          }
          System.out.println("min number is " + min);
      
      做些改变,继续前进。:)

      publicstaticvoidmain(字符串参数[]){
      int-bucky[]=新int[]{4,6,8,19,199,400};
      int max=bucky[0];
      int min=bucky[0];
      整数和=0;
      对于(int i=0;i bucky[i]){
      min=bucky[i];
      }
      否则,如果(最大值
      可以使用Java中的数组开发如下小程序,它最初将数组的第一个元素存储在
      min
      max
      sum
      中,然后从第一个元素开始遍历数组,并通过与数组的
      input[i]
      指向的当前元素进行比较,确定
      min
      max
      值元素。另外,每次向
      sum
      变量添加
      input[i]
      ,以获得所有元素的总和。在计算了
      min
      max
      sum
      值元素之后;通过从
      sum
      中减去
      min
      max
      计算
      avg
      ,并将结果值除以
      length-2

      class ComputeAvg
      {
        public static void main (String[] a)
        {
          int[] input = {10,11,12,13,14,15};
          int min, max, sum, avg;
          min = max = sum = input[0];
          int length = input.length;
          for (int i = 1; i < length; i++)
          {
            if (min > input[i])
              min = input[i];
            else if (max < input[i])
              max =  input[i];
            sum += input[i];
          }
          avg = (sum - min - max)/(length - 2);
      
          System.out.println("sum for input is : " + sum);
          System.out.println("highest value element is : " + max);
          System.out.println("lowest value element is : " + min);
          System.out.println("sum excluding min and max value elements is : " + (sum - min - max));
          System.out.println("Average after excluding min and max value elements is : " + avg);
        }
      }
      OUTPUT
      ======
      sum for input is : 75
      highest value element is : 15
      lowest value element is : 10
      sum excluding min and max value elements is : 50
      Average after excluding min and max value elements is : 12
      
      class ComputeAvg
      {
      公共静态void main(字符串[]a)
      {
      int[]输入={10,11,12,13,14,15};
      整数最小值、最大值、总和、平均值;
      最小值=最大值=总和=输入[0];
      int length=input.length;
      for(int i=1;i输入[i])
      min=输入[i];
      否则如果(最大值<输入[i])
      最大值=输入[i];
      总和+=输入[i];
      }
      平均值=(总和-最小值-最大值)/(长度-2);
      System.out.println(“输入的总和为:“+sum”);
      System.out.println(“最大值元素为:“+max”);
      System.out.println(“最小值元素为:“+min”);
      System.out.println(“不包括最小值和最大值元素的总和为:”+(sum-min-max));
      System.out.println(“排除最小值和最大值元素后的平均值为:“+avg”);
      }
      }
      输出
      ======
      输入的总和为:75
      最高值元素为:15
      最低值元素为:10
      不包括最小值和最大值元素的总和为:50
      排除最小值和最大值元素后的平均值为:12
      
      不能对数组求和(在查找最小值/最大值时),从和中减去最小值/最大值,然后从中计算平均值吗?问题是,如果数组中有两倍于最小值或两倍于最大值(如{1,1,4,6,7,9,9}问题是,如果数组中的最小值是最大值的两倍或两倍(如{1,1,4,6,7,9,9}),那么将同时删除它们(
          int min = 0;
          int j = 1;
          for (int i = 0; i < bucky.length; i++) {
              if (bucky[i] < bucky[j]) {
                  min = bucky[i];
                  j = i;
              }
          }
          System.out.println("min number is " + min);
      
      int min = bucky[0];
          //int j = 1;
          for (int i = 1; i < bucky.length; i++) {
              if (bucky[i] < min) {
                  min = bucky[i];
              }
          }
          System.out.println("min number is " + min);
      
      public static void main(String args []){
          int bucky [] = new int [] {4, 6, 8, 19, 199, 400};
          int max = bucky[0];
          int min = bucky[0];
          int sum = 0;
          for(int i = 0; i<bucky.length; i++){
      
              if(min > bucky[i]){
                  min = bucky[i];
              }
              else if(max < bucky[i]){
                  max = bucky[i];
              }
              sum += bucky[i];
          }
          sum -= (min + max);
          System.out.println("Max is " + max);
          System.out.println("Min is " + min);
          System.out.println("Sum is " + sum);
          System.out.println("Average is " + sum/(bucky.length-2));
      
      }
      
      class ComputeAvg
      {
        public static void main (String[] a)
        {
          int[] input = {10,11,12,13,14,15};
          int min, max, sum, avg;
          min = max = sum = input[0];
          int length = input.length;
          for (int i = 1; i < length; i++)
          {
            if (min > input[i])
              min = input[i];
            else if (max < input[i])
              max =  input[i];
            sum += input[i];
          }
          avg = (sum - min - max)/(length - 2);
      
          System.out.println("sum for input is : " + sum);
          System.out.println("highest value element is : " + max);
          System.out.println("lowest value element is : " + min);
          System.out.println("sum excluding min and max value elements is : " + (sum - min - max));
          System.out.println("Average after excluding min and max value elements is : " + avg);
        }
      }
      OUTPUT
      ======
      sum for input is : 75
      highest value element is : 15
      lowest value element is : 10
      sum excluding min and max value elements is : 50
      Average after excluding min and max value elements is : 12