所以基本上我有一个带有以下示例输入的数组:
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;
答案 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);
}