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

私はコードの初心者であり、このWebサイトを使用するのはこれが初めてです。オンラインで検索したところ、同様の質問で奇数の数が提供されていることがわかりました。したがって、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;
}