gpt4 book ai didi

java - Java中仅从偶数创建新数组的方法

转载 作者:行者123 更新时间:2023-12-01 13:15:10 27 4
gpt4 key购买 nike

我正在尝试创建仅根据另一个数组中的偶数创建新数组的方法。但是,我不明白为什么我的输出数组具有正确的长度(仅包含偶数的数量),但我有 0 而不是实际数字。

我知道问题很简单,但现在我被困住了。

  import java.util.*;
public class test{
public static int [] myMethod(int []arr){
int [] temp;
int howManyEven = 0;
for(int i=0;i<arr.length;i++){
if(arr[i]%2==0){
howManyEven++;
}
}
temp = new int [howManyEven];
int evenNum = 0;
for(int i=0;i<temp.length;i++){
boolean even = false;

for(int j=0;j<arr.length;j++){
if(arr[j]%2==0){
even = true;
evenNum = arr[j];
}
}
if(!even){
temp[i]=evenNum;
}

}
return temp;
}
public static void main (String[]args){
int [] myArray = {5,5,8,9,7,4,4,2,3};
System.out.println(Arrays.toString(myMethod(myArray)));

}
}

最佳答案

myMethod 的第二部分中,有嵌套的 for 循环,您的外部循环应该迭代 arr。可以简化为如下

    temp = new int [howManyEven];
int j = 0;
for(int i=0;i<arr.length;i++){
if(arr[i]%2 == 0) {
temp[j++] = arr[i];
}
}

更好的是,您可以使用 java 集合并在单个循环中完成工作

public static Integer[] myMethod(int []arr){ //notice the return type is Integer[] instead of int[]
List<Integer> evens = new ArrayList<Integer>();
for(int a : arr) {
if(a%2 == 0) {
evens.add(a);
}
}
return evens.toArray(new Integer[evens.size()]);
}

关于java - Java中仅从偶数创建新数组的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22528225/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com