2 回答
TA贡献1875条经验 获得超3个赞
正如鲁本所说,问题出在你的循环中。我冒昧地重构您的代码只是为了向您展示解决问题的更好方法
package allevenproj;
import java.util.*;
public class AllEvenProj {
static int[] read(int size) {
Scanner scan = new Scanner(System.in);
int[] arr = new int[size];
for (int i = 0; i < size; i++) {
System.out.printf("Enter arr[%d]: ", i);
arr[i] = scan.nextInt();
}
return arr;
}
static void print(int[] arr) {
System.out.printf("There are %d even numbers\n", arr.length);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
System.out.print("Enter size of array: ");
int size = scan.nextInt();
print(Arrays.stream(read(size)).filter(x -> x % 2 == 0).toArray());
}
}
TA贡献1809条经验 获得超8个赞
您只得到最后一个值,因为由于方法中的内部 for 循环GetEven:每次执行完整的内部循环(对 中的每个数字都执行此操作arr)时,您将整个evenArr.
所以修复是删除内循环:
static int[] getEven(int[] arr, int count) {
int[] evenArr = new int[count];
int j = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 == 0) {
evenArr[j++] = arr[i];
}
}
return evenArr;
}
顺便说一下,方法名称应该是小写的。命名约定
添加回答
举报