将一些元素从double数组复制到double的数组列表中

时间:2013-11-29 01:12:49

标签: java arrays double

我有方法阈值(double[] adouble x),它采用列表(a)和数值(x)并返回{a内的所有值{1}}大于x。我无法将包含大于x的元素添加到包含double类型元素的新列表中。以下是我到目前为止的情况:

public static double[] threshold(double[] a, double x)
{
    List<double> ell = new ArrayList<double>();
    p = d >x;
    ell.add(p);
    answer5 = ell;
    return answer5;
}

3 个答案:

答案 0 :(得分:1)

您需要执行一些步骤才能实现此目标

// Construct a temporary list.
List<Double> ell = new ArrayList<Double>();
// iterate our input array 'a'.
for (double d : a) {
  // test if the value 'd' is greater then the threshold 'x'.
  if (d > x) {
    // if it is, add it to the temporary list.
    ell.add(d);
  }
}
// construct an array of double(s).
double[] r = new double[ell.size()];
for (int i = 0; i < r.length; i++) {
  // Add the element(s) to the output array.
  r[i] = ell.get(i);
}
return r; // Return the Array.

答案 1 :(得分:0)

public static Double[] threshold(double[] a, double x){
    List<Double> l = new ArrayList<Double>(a.length);
    for( double d : a)
        if( d > x )
            l.add(d);

    return l.toArray(new Double[0]);
}

一些事情:

  1. 泛型(<>)除了非原始类之外,因此您需要使用Double而不是double
  2. 您需要for循环来遍历a
  3. 中的每个项目
  4. 您可以使用toArray()转换为Double[]类型(假设您可以更改返回类型)。否则,您需要执行@Elliott建议的操作,并使用double[]循环创建新的for

答案 2 :(得分:0)

我会这样做

public static double[] threshold(double[] a, double x) {
    int n = 0;
    for (double e : a) {
        if (e > x) {
            n++;
        }
    }
    double[] a2 = new double[n];
    n = 0;
    for (double e : a) {
        if (e > x) {
            a2[n++] = e;
        }
    }
    return a2;
}