Pytania dotyczące copyEven w java
Pytanie brzmi następująco:
Napisz metodę Java, int[] copyEven(int[] nums)która kopiuje elementy o parzystych indeksach do nowej tablicy.
Musi zwrócić nową tablicę o prawidłowej długości z tymi elementami w środku.
Na przykład
copyEven([1, 2, 3]) → [1, 3]
copyEven([1, 2, 3, 4]) → [1, 3]
Poniżej mój kod:
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;
}
Jestem dopiero początkującym w kodzie i po raz pierwszy używam tej witryny. Szukałem w Internecie i stwierdziłem, że w podobnych pytaniach podano liczbę nieparzystych liczb. Dlatego planuję anajpierw użyć w kodzie liczby nieparzystych liczb, a następnie utworzyć nową tablicę, aby zakończyć pytanie. Jednak NetBeans powiedział mi, że w int [] arr=new int[c], tablica jest zapisywana, a nie odczytywana. Nie rozumiem, co to znaczy. Byłbym bardzo wdzięczny, gdybyś mógł mi pomóc, dziękuję!
Odpowiedzi
Tutaj możesz uzyskać wszystkie elementy przy parzystych indeksach.
Indeksowanie rozpoczęło się od 1, zgodnie z podanymi przykładami.
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;
}