Pytania dotyczące copyEven w java

Oct 12 2020

Pytanie brzmi następująco:

Napisz metodę Java, int[] copyEven(int[] nums)która kopiuje elementy o parzystych indeksach do nowej tablicy.

Musi zwrócić nową tablicę o prawidłowej długości z tymi elementami w środku.

Na przykład

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

Poniżej mój kod:

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

Jestem dopiero początkującym w kodzie i po raz pierwszy używam tej witryny. Szukałem w Internecie i stwierdziłem, że w podobnych pytaniach podano liczbę nieparzystych liczb. Dlatego planuję anajpierw użyć w kodzie liczby nieparzystych liczb, a następnie utworzyć nową tablicę, aby zakończyć pytanie. Jednak NetBeans powiedział mi, że w int [] arr=new int[c], tablica jest zapisywana, a nie odczytywana. Nie rozumiem, co to znaczy. Byłbym bardzo wdzięczny, gdybyś mógł mi pomóc, dziękuję!

Odpowiedzi

MikheilZhghenti Oct 12 2020 at 18:25

Tutaj możesz uzyskać wszystkie elementy przy parzystych indeksach.
Indeksowanie rozpoczęło się od 1, zgodnie z podanymi przykładami.

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