JAVA удалить все нули в конце массива
Сам массив отсортировать получилось, но не пойму как удалить все нули и вывести
import java.util.Arrays;
public class Quest {
public static void main(String[] args) {
int[] numbers = { 5, 4, 3, 0, 6, 0, 0, 5, 6, 0, 25, 0, 8, 7, 3, 0, 1, 1, 0, 6, 4 };
System.out.println ("Дан массив: " + Arrays.toString((numbers)));
int temp;
int count = 0;
for ( int i = 0; i < numbers.length; i++) {
if ((numbers[i] != 0)) {
temp = numbers[count];
numbers[count] = numbers[i];
numbers[i] = temp;
count = count + 1;
}
}
System.out.println("Отсортированный массив с 0 в конце: " + Arrays.toString(numbers));
int[] newNumbers = new int[numbers.length];
for ( int i = 0; i < numbers.length - 1; i++) {
if ((numbers[i] == 0)) {
newNumbers[i] = numbers[i - 1];
System.out.println("Отсортированный массив без 0 в конце: " + Arrays.toString(newNumbers[i]));
} else {
i++;
}
}
}
}
Ответы (2 шт):
Автор решения: coolsv
→ Ссылка
C помощью стримов, например:
Arrays.stream(numbers)
.boxed() // пакуем примитивы в объекты
.sorted(Collections.reverseOrder()) // сортируем в обратном порядке
.filter(i -> i != 0) // убираем всё что не равно 0
.forEach(System.out::println); // выводим
Автор решения: Eugene Krivenja
→ Ссылка
Примитивно вторую часть можно так написать:
System.out.println("Отсортированный массив с 0 в конце: " + Arrays.toString(numbers));
int i;
for ( i = 0; i < numbers.length - 1; i++) {
if (numbers[i] == 0) {
break;
}
}
numbers = Arrays.copyOfRange(numbers, 0, i);
System.out.println("Отсортированный массив без 0 в конце: " + Arrays.toString(numbers));