试图计算ArrayList中的平均值

时间:2015-06-14 08:54:55

标签: java arraylist

我正在尝试编写一些代码,它接收任意数量的条目,并在给定特定条件的情况下将其存储在ArrayList中。我无法做的是找到ArrayList中存储的值的平均值。这是迄今为止编写的代码:

import java.util.ArrayList;
import java.util.Scanner;

public class App {
    private ArrayList<Integer> temp;
    private int t;
    private int count = 0;

    public void main() {
        Scanner input = new Scanner(System.in);
        temp = new ArrayList<>();
        System.out.println("Enter temperatures: ");
        do {
            t = input.nextInt();
            if (t == -99) {
                System.out.println("Program Terminating..");
                break;
            } else {
                temp.add(t);
            }
        } while (t != -99);
        for (int i = 0; i < temp.size(); i++) {
            if (temp.get(i) > 40) {
                count++;
            }

        }
        System.out.println(count);

    }
}

2 个答案:

答案 0 :(得分:2)

你那里有一个时髦的条件;如果值大于40,您只会进行操作。下面的代码将这些考虑在内;如果你不想要,那就删除条件。

以传统方式,您可以使用带计数器的增强型for来获取大于40的所有值并将其平均值...

double sum = 0;
for(Integer i : temp) {
    if(i > 40) {
        sum += i;
        count++;
    }
}

if(count != 0) { // avoid divide-by-zero error here
    System.out.println(sum / count);
}

...或者使用Java 8,您可以使用流,过滤掉小于40的流,然后将平均值变为双倍:

System.out.println(temp.stream()
                       .filter(x -> x > 40)
                       .mapToInt(Integer::intValue)
                       .average()
                       .getAsDouble());

答案 1 :(得分:0)

  function(LeaveTypeSelectedIndex,chk)
   {
      if(LeaveTypeSelectedIndex==0)
      {

         chk..checked = false;
      }
   }