Вопросы о copyEven в java

Oct 12 2020

Вопрос такой:

Напишите метод Java, int[] copyEven(int[] nums)который копирует элементы по четным индексам в новый массив.

Он должен вернуть новый массив правильной длины с этими элементами внутри.

Например

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;
}