Perguntas sobre copyEven em java
A questão é a seguinte:
Escreva um método Java int[] copyEven(int[] nums)que copie elementos em índices pares para uma nova matriz.
Ele deve retornar a nova matriz de comprimento correto com esses elementos dentro.
Por exemplo
copyEven([1, 2, 3]) → [1, 3]
copyEven([1, 2, 3, 4]) → [1, 3]
Abaixo está o meu código:
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;
}
Sou apenas um iniciante em código e esta é a primeira vez que uso este site. Eu pesquisei online e descobri que em questões semelhantes, o número de números ímpares é fornecido. Portanto, pretendo usar ano código para contar o número de números ímpares no início e, em seguida, criar uma nova matriz para concluir a pergunta. No entanto, o NetBeans me disse que em int [] arr=new int[c], o array é gravado, nunca lido. Eu não entendo o que isso significa. Eu agradeceria muito se você pudesse me ajudar, obrigado!
Respostas
Aqui você pode obter todos os elementos em índices pares.
A indexação começou em 1, conforme os exemplos fornecidos.
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;
}