Вопросы о copyEven в java
Вопрос такой:
Напишите метод 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]массив записывается, а не читается. Я не понимаю, что это значит. Буду очень признателен, если вы можете мне помочь, спасибо!
Ответы
Здесь вы можете получить все элементы по четным индексам.
Индексирование началось с 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;
}