Java의 copyEven에 대한 질문

Oct 12 2020

질문은 다음과 같습니다.

int[] copyEven(int[] nums)인덱스의 요소를 새 배열로 복사 하는 Java 메소드 를 작성하십시오 .

해당 요소가 내부에있는 올바른 길이의 새 배열을 반환해야합니다.

예를 들면

copyEven([1, 2, 3]) → [1, 3]
copyEven([1, 2, 3, 4]) → [1, 3]

아래는 내 코드입니다.

public static int [] copyEven(int[] nums){
    int n =nums.length;
    int a=0;
    for (int i=0;i<n;i++){
        if (nums[i]%2 !=0){
            a++;
    }
    int c=a;
    int [] arr=new int[c];
    int b=0;
    for (int j=0;b<a;j++){
        if (nums[j]%2 !=0){
            arr[b]=nums[j];
            b++;}
        }
    }
    return arr;
}

저는 코드에 대한 초보자 일 뿐이며이 웹 사이트를 처음 사용합니다. 온라인에서 검색 한 결과 비슷한 질문에서 홀수 수가 제공된다는 것을 알았습니다. 따라서 a코드에서 처음에 홀수 수를 계산 한 다음 새 배열을 만들어 질문을 완료 할 계획입니다. 그러나 NetBeans는 int [] arr=new int[c]에서 배열이 쓰여지고 읽지 않는다고 말했습니다 . 그게 무슨 뜻인지 모르겠습니다. 도와 주시면 감사하겠습니다. 감사합니다!

답변

MikheilZhghenti Oct 12 2020 at 18:25

여기에서 모든 요소를 ​​짝수 인덱스로 얻을 수 있습니다.
주어진 예에서 말했듯이 인덱싱은 1부터 시작되었습니다.

public static int[] copyEven(int[] nums) {
    int length = nums.length;
    int numberOfEvenNumbers = (length % 2 == 0) ? length / 2 : length / 2 + 1;

    int[] copy = new int[numberOfEvenNumbers];
    int index = 0;

    for (int i = 0; i < nums.length; i += 2) {
        copy[index] = nums[i];
        index++;
    }
    return copy;
}