Java'da bile copyEğer hakkında sorular

Oct 12 2020

Soru şu şekildedir:

int[] copyEven(int[] nums)Öğeleri çift indislerde yeni bir diziye kopyalayan bir Java yöntemi yazın .

Bu öğelerle birlikte doğru uzunluktaki yeni diziyi döndürmelidir.

Örneğin

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

Kodum aşağıdadır:

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

Ben kod konusunda yeni başlayan biriyim ve bu web sitesini ilk kez kullanıyorum. İnternette arama yaptım ve benzer sorularda tek sayıların sayısının verildiğini gördüm. Bu nedenle, önce atek sayıları saymak için kodda kullanmayı , ardından soruyu bitirmek için yeni bir dizi oluşturmayı planlıyorum . Ancak, NetBeans bana int [] arr=new int[c]dizinin yazıldığını, asla okunmadığını söyledi. Bunun ne anlama geldiğini anlamıyorum. Bana yardım edebilirseniz çok memnun olurum, teşekkür ederim!

Yanıtlar

MikheilZhghenti Oct 12 2020 at 18:25

Burada tüm öğeleri indislerde bile bulabilirsiniz.
Verdiğiniz örneklerde belirtildiği gibi indeksleme 1'den başladı.

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