这是我在这里的第一篇文章,我会在我的问题中尽量准确。我必须为家庭作业解决的问题: 我们创建一个数组,并且必须创建一个程序来选择值为-2.99到2.99的元素并将它们打印在新数组中。 (JAVA) 我试过这个: import java.util.Arrays;
public class Task14 {
public static void main(String[] args) {
double[] array = { -1.1, 4.567, 0.45, 7.77, 2.01, -15.998, -0.004, 2.99, 3.005 };
int count = 0;
for (int i = 0; i < array.length; i++) {
if ((array[i] >= -2.99) && (array[i] <= 2.99)) {
count++;
}
}
double[] interval = new double[count];
for (int index = 0; index < array.length; index++) {
if ((array[index] >= -2.99) && (array[index] <= 2.99)) {
// and here's the drama - i can't find a solution how to match the elements from the two arrays
//I tried
interval[index] = array[index];
//or to make a new variable which takes the value from array[index] when it's in -2.99 : 2.99, but it doesn't work either :)
}
}
System.out.println(Arrays.toString(interval));
}
}
请问我能提一下吗?
答案 0 :(得分:0)
如果您想继续沿着解决问题的路径(不使用ArrayList
),请考虑添加currentIndex
变量以跟踪您当前所使用的新索引。只要您在范围内找到值,就可以增加此值,如下所示:
double[] interval = new double[count];
int currentIndex = 0;
for (int index = 0; index < array.length; index++) {
if ((array[index] >= -2.99) && (array[index] <= 2.99)) {
interval[currentIndex] = array[index];
currentIndex++;
}
}
答案 1 :(得分:0)
List<Double> filteredList = new ArrayList<Double>();
for (double val : array) {
if (( val>= -2.99) && (val <= 2.99)) {
filteredList.add(val);
}
}
Double arr[] = (Double[]) filteredList.toArray();
您可以将数据添加到arraylist
,然后可以将其转换为double
数组。
答案 2 :(得分:0)
您需要保留interval
数组的索引:
int intervalIndex = 0;
for(a : array) {
if(Math.abs(a) <= 2.99) {
interval[intervalIndex++] = a;
}
}
如果您使用的是java 8并希望使用流,则可以使用filter
函数并执行:
double[] array = // ...
return Arrays.stream(array)
.filter(d => Math.abs(a) <= 2.99)
.toArray()
答案 3 :(得分:0)
你可以用一点空间低效的方式做到这一点:
public static void main(String[] args) {
double[] array = { -1.1, 4.567, 0.45, 7.77, 2.01, -15.998, -0.004, 2.99, 3.005 };
double[] arrayNew = new double[array.length];
for (int i = 0,k=0; i < array.length; i++) {
if ((array[i] >= -2.99) && (array[i] <= 2.99)) {
arrayNew[k] = array[i];
k++;
}
}
我在这里使用变量&#39; k&#39;索引元素的当前位置。
您也可以使用向量而不是数组,它将节省空间和时间。
public static void main(String[] args) {
double[] array = { -1.1, 4.567, 0.45, 7.77, 2.01, -15.998, -0.004, 2.99, 3.005 };
Vector<Double> arrayNew = new Vector<Double>();
for (int i = 0; i < array.length; i++) {
if ((array[i] >= -2.99) && (array[i] <= 2.99)) {
arrayNew.add(array[i]);
}
}