将数组结果从for循环保存到变量

时间:2013-12-16 04:31:32

标签: 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++) {
    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("}");

到目前为止,它打印出{6 8 19 199}。我希望能够将它们保存在变量中并计算平均值。任何帮助将不胜感激。

6 个答案:

答案 0 :(得分:4)

这是一个简单的程序,可以实现您的目标。

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

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)));

答案 1 :(得分:1)

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));

}

答案 2 :(得分:1)

可以使用arrays in Java开发小程序,如下所示,最初将数组的第一个元素存储在minmaxsum中,然后开始遍历来自第一个元素的数组,并通过将它们与数组的min指向的当前元素进行比较来确定maxinput[i]值元素。同时每次向input[i]变量添加sum以获取所有元素的总和。在计算了minmaxsum值元素之后;通过从avg中减去minmax来计算sum,并将结果值除以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

答案 3 :(得分: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)

答案 4 :(得分:0)

你在那里是90%。你只需要朝着正确的方向轻推。

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

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

顺便说一句,由于De Morgan's Law,它可以被重写。这对您来说可能更直接:“如果bucky[i]中的值既不是最大值也不是最小值......”

for(int i=0;i<bucky.length; i++){
    if(!(bucky[i] == max || bucky[i] ==min)) {
       // implementation
    }
}

这很难。你现在需要的是什么:

  • 一个计数器,用于告诉您实际 添加了多少个值。像adjustedTotal这样的东西。如果数字不是最小值或最大值,您只需添加到此计数器

  • 一个简单的sum变量,已正确初始化,从bucky[i]获取bucky[i] != max && bucky[i] != min的值。

答案 5 :(得分:0)

您可以定义名为 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);

min 的价值是什么?

0 。这是不正确的。

You can first specify the first element in array as min, and then compare it with remaining values. If any value is smaller than min, then change the value for 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);

进行一些改变并继续前进。 :)