Создал массив из 10 чисел: 0 и 1, инициализировал каждый индекс массива как 0 или 1. Написал цикл:
for (int i = 0; i < array.length; i++) {
if (array[i] == 0) {
count0++;
System.out.println(count0);
Получил ответ 1, 2, 3, 4, 5, т. к. 0 встречается в массиве 5 раз. Как мне правильно написать цикл, чтобы получить ответ только 5?
Можно использовать метод IntStream.count(), который возвращает количество элементов в текущем стриме:
int[] arr = new int[]{0, 1, 0, 1, 0, 1, 0, 0, 1, 1};
long count =
// открываем stream по массиву
Arrays.stream(arr)
// фильтруем стрим - отбираем
// только элементы, равные '0'
.filter(e -> e == 0)
// считаем количество элементов
.count();
// выводим результат
System.out.println(count); // 5
У вас код подразумевает, что в каждом повторном проходе цикла будет выводиться актуальное состояние count0. Вынесите System.out.println из цикла, чтобы он выполнялся один раз в конце.
public class Main {
public static void main(String[] args) {
int[] arr1 = new int[]{1, 0, 0, 0, 1};
System.out.println(foo(arr1));
}
static int foo(int[] arr) {
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 0) {
count += 1;
}
}
return count;
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей