【问题标题】:Arraylist to array of integers, can't get it to work (java)!Arraylist 到整数数组,无法正常工作(java)!
【发布时间】:2012-02-16 05:23:28
【问题描述】:

我正在创建一种方法来取数组中所有偶数的平均值。

如何将 arraylist 对象(偶数)转换为数组,以便总结它们?

    public static double percentEven(int[]a)
    {
    ArrayList evens = new ArrayList();
    int evenSum = 0;


    for (int counter = 0;counter < a.length;counter++)
    {
        if ((a[counter]%2) == 0 )    
        evens.add(a[counter]);
    }    

    int[] evenReturned = new int[evens.size()];
    evens.toArray(evenReturned);

    int evensCount = 0;
    for (evensCount = 0;evensCount < evens.size();evensCount++)
    {
        evenSum += evenReturned[evensCount];   
    }    


    return evenSum/evensCount;

  }    

【问题讨论】:

  • 为什么要转成数组,没必要这么做?您可以按原样从 ArrayList 中完美地总结它们。
  • 为什么不直接在数组上做平均呢?只需保持偶数元素的总和和计数。添加结束返回sum / count。顺便说一句,最后一部分也是你现在忘记的。
  • 另一方面,请注意,如何正确地将数组列表转换为数组?

标签: java arrays arraylist


【解决方案1】:

你为什么要收集它们?把它们加起来!

int evensCount = 0;
int evenSum = 0;
for (int counter = 0; counter < a.length; counter++) {
    if (a[counter] % 2 == 0) {
        evensCount++;
        evenSum += a[counter];
    }
}

return evenSum/evensCount;

【讨论】:

    【解决方案2】:

    虽然您不需要在此处执行此操作,但要将 ArrayList 转换为 Arrays,请执行以下操作:

    List<T> list = new ArrayList<T>();
    T [] yourArray = list.toArray(new T[list.size()]);
    

    【讨论】:

      【解决方案3】:

      如果你想总结它们,那么只需使用一个专门的for循环来遍历evens ArrayList中的每个元素,例如

      for (int e : evens)
      {
         evenSum += e;
      }
      
      return evenSum/evensCount;
      

      【讨论】:

        【解决方案4】:

        你只需要这样做

        if ((a[counter]%2) == 0 ) { 
            evenCount++ ;
            evens.add(a[counter]); // required only if you want an array of even numbers 
            evenSum += a[counter] ;
        }
        ...
        ...
        return evenSum / evenCount ;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-04-05
          • 2015-01-14
          • 1970-01-01
          • 1970-01-01
          • 2015-12-21
          • 1970-01-01
          • 2013-04-03
          • 1970-01-01
          相关资源
          最近更新 更多