我有方法阈值(double[] a
,double 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;
}
答案 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]);
}
一些事情:
<>
)除了非原始类之外,因此您需要使用Double
而不是double
。for
循环来遍历a
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;
}