如果满足条件,则复制特定元素

时间:2020-01-05 10:01:52

标签: java arrays

所以基本上我有一个带有以下示例输入的数组:

10.2    
20.8    
30.1    
28.7    
43.7    
-10.4    
0.0    
8.0    
30.4    
30.0

我只想将> = 30的元素复制到另一个数组中。

这是我当前拥有的代码,但是我对如何继续感到困惑。任何帮助将不胜感激!双数组“ reallyWarm”是要在其上进行复制的数组

Scanner scanner = new Scanner(System.in);
double[] temperatures = new double[10];
for (int i = 0; i < 10; i++){
    temperatures[i] = scanner.nextDouble();
}
double[] reallyWarm;

3 个答案:

答案 0 :(得分:4)

您应使用if (temperatures[i] >= 30.0)来检查大于或等于30.0的元素。

尝试一下:

double[] reallyWarm;
int t = 0;    

for (int i = 0; i < temperatures.length; i++) {
    if (temperatures[i] >= 30.0) {
        t++;    // count elements >= 30.0
    }
}
reallyWarm = new double[t];
int j = 0;
for (int i = 0; i < temperatures.length; i++) {
    if (temperatures[i] >= 30.0) { 
        reallyWarm[j] = temperatures[i];    
        j++;
    }
}

System.out.println(Arrays.toString(reallyWarm));

如果您使用的是Java 8,则只需一行代码即可完成此任务:

double[] reallyWarm;
reallyWarm = Arrays.stream(temperatures).filter(e -> e >= 30.0).toArray();
System.out.println(Arrays.toString(reallyWarm));

输出:

[30.1, 43.7, 30.4, 30.0]

为“ ...在每个元素后添加新行...”更新:

for(int i=0; i<reallyWarm.length; i++) {
    System.out.println(reallyWarm[i]);
}

您可以使用for循环遍历数组并将每个元素打印在新行上。

答案 1 :(得分:1)

使用JAVA 8和更高版本:

double temperatures[] = { 10.2, 20.8, 30.1, -10.4, 30.4, 0.0, 30.0, 43.7 };
double reallyWarm[] = Arrays.stream(temperatures).filter(d -> d >= 30).toArray();

答案 2 :(得分:0)

使用Java8流:

public void main(String[] args) {
    Double arr[] = { 10.2, 20.8, 30.1, -10.4, 30.4, 0.0, 30.0, 43.7 };
    List<Double> result = Arrays.asList(arr).stream().filter(k -> k >= 30).collect(Collectors.toList());
    System.out.println(result);
}