Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果满足条件,则复制特定元素_Java_Arrays - Fatal编程技术网

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

Java 如果满足条件,则复制特定元素,java,arrays,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[] temperatu

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

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;
您应该使用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));
输出:

[30.1, 43.7, 30.4, 30.0]
更新“。。。在每个元素后面有一个新行…':

for(int i=0; i<reallyWarm.length; i++) {
    System.out.println(reallyWarm[i]);
}
可以使用for循环遍历数组,并在新行上打印每个元素

如果温度[i]>=30.0,则应使用if来检查大于或等于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));
输出:

[30.1, 43.7, 30.4, 30.0]
更新“。。。在每个元素后面有一个新行…':

for(int i=0; i<reallyWarm.length; i++) {
    System.out.println(reallyWarm[i]);
}
可以使用for循环遍历数组,并在新行上打印每个元素

使用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);
}
使用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);
}

使用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();

使用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();

如果您只是在学习循环和数组,请使用第一个循环来计算大于30的元素数。然后创建一个长度正确的数组。然后使用第二个循环将大于30的所有元素复制到新数组中。我建议您使用java的集合框架arraylist,因为它可以动态增长。我一定会尝试的,谢谢@JBNizet@编程Boi123如果我的解决方案解决了你的问题,考虑它通过点击左按钮来接受,在那里它将有助于社区中的其他开发者,如果你正在学习循环和数组,那么使用第一个循环来计算元素的数量> 30。然后创建一个长度正确的数组。然后使用第二个循环将大于30的所有元素复制到新数组中。我建议您使用java的集合框架arraylist,因为它可以动态增长。我一定会尝试的,谢谢@JBNizet@编程Boi123如果我的解决方案解决了你的问题,考虑它通过点击左按钮来接受,这将有助于社区中的其他开发者,这很好,但是我真的希望在每一个元素之后都有一个新的行。你可以使用for循环遍历数组并在一个新的行上打印每个元素。更新答案…这很好,但我真的希望在每个元素后面有一条新行。您可以使用for循环遍历数组,并在新行上打印每个元素。正在更新答案。。。