Pertanyaan tentang copyEven di java

Oct 12 2020

Pertanyaannya adalah sebagai berikut:

Tulis metode Java int[] copyEven(int[] nums)yang menyalin elemen pada indeks genap ke array baru.

Itu harus mengembalikan array baru dengan panjang yang benar dengan elemen-elemen di dalamnya.

Sebagai contoh

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

Di bawah ini adalah kode saya:

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

Saya hanya seorang pemula tentang kode, dan ini adalah pertama kalinya saya menggunakan situs web ini. Saya mencari secara online dan menemukan bahwa dalam pertanyaan serupa, disediakan jumlah angka ganjil. Jadi, saya berencana menggunakan akode untuk menghitung jumlah angka ganjil pada awalnya, kemudian membuat array baru untuk menyelesaikan pertanyaan. Namun, NetBeans memberi tahu saya bahwa di int [] arr=new int[c], array ditulis ke, jangan dibaca dari. Saya tidak mengerti maksudnya. Saya akan sangat menghargai jika Anda dapat membantu saya, terima kasih!

Jawaban

MikheilZhghenti Oct 12 2020 at 18:25

Di sini Anda bisa mendapatkan semua elemen pada indeks genap.
Pengindeksan dimulai dari 1 seperti contoh yang Anda berikan.

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