Class primer_array8
{
static Scanner reader = new Scanner(System.in);
public static void main(String[] args)
{
int [] b=new int[reader.nextInt()];
b=fillArr(b.length);
printArr(b);
if (is_balance(b)==true) System.out.println("Yes");
else System.out.println("No");
}
public static boolean is_balance(int[] c)
/**
Состояние входа: метод получает массив целых чисел
Состояние выхода: метод возвращает значение true, если записанное в нем условие выполняется; в противном случае метод возвращает значение false
*/
{
if (countArr(0,c)==countArr(1,c)) return true;
else return false;
}
public static int countArr(int x, int[] c)
/**
Состояние входа: метод получает целочисленное значение и одномерный массив
Состояние выхода: метод возвращает либо количество четных значений в массиве (если целочисленный параметр равен 0), либо количество нечетных значений в массиве (если целочисленный параметр равен 1)
*/
{
int count=0;
for (int i=0; i<c.length; i++)
if (c[i]%2==x) count++;
return count;
}
public static void printArr (int[] c)
/**
Состояние входа: метод получает одномерный массив
Состояние выхода: метод выводит на экран значения массива – в одной строке с пробелами и текстом End of array в конце строки
*/
{
for (int i=0; i<c.length; i++)
System.out.print(c[i]+" ");
System.out.println(" End of array");
}
public static int[] fillArr (int x)
/**
Состояние входа: метод получает целочисленное значение, равное размеру массива
Состояние выхода: метод возвращает массив, заполненный случайными числами из диапазона [0;9]
*/
{
int [] c=new int[x];
for (int i=0; i<c.length; i++)
c[i]=(int)(10*Math.random());
printArr(c);
return c;
}
}
Раздел №24 (часть 1).
Массивы счетчиков
В одной из предыдущих тем мы рассматривали использование счетчиков, то есть переменных, которые позволяют подсчитать количество каких-то значений, случаев, наступления или не-наступления каких-то определенных ситуаций.
Например:
· Количество четных значений в серии чисел
· Число неудовлетворительных оценок, полученных за контрольную работу
· Количество максимальных значений в массиве целых чисел
Однако использовать переменную-счетчик удобно только в том случае, если надо подсчитать один или два варианта значений: четные или нечетные значения, удовлетворительная или не удовлетворительная оценка, максимальное или не максимальное значение.
А вот если надо определить и подсчитать гораздо больше вариантов, то ситуация заметно осложняется: например, если надо определить количество каждой цифры в серии целочисленных значений. В этом случае нам понадобятся 10 счетчиков: по одному на каждую цифру. И в этой ситуации естественный выход заключается в том, чтобы использовать массив, каждая ячейка которого станет выполнять роль переменной-счетчика.
Такие массивы называются массивами счетчиков.
Рассмотрим пример: "Напишите класс, который генерирует серию из 100 случайных чисел из диапазона [0;9] и определяет, сколько раз каждое число встречалось в этой серии."
Для решения воспользуемся массивом счетчиков размером 10, так что в каждой ячейке в результате должно быть записано значение, соответствующее ответу на вопрос: "Сколько раз в серии было сгенерировано число, равное индексу ячейки?".
Иными словами, если по окончании генерации серии в ячейке с индексом, например, 3 будет записано значение 17, это будет означать, что число 3 было сгенерировано 17 раз.
Для этого каждое сгенерированное случайное значение будет указывать на индекс той ячейки, в которой надо будет увеличить значение на 1, то есть каждая ячейка массива будет использоваться точно в соответствии с правилами использования переменных-счетчиков.
Разумеется, нам надо будет в самом начале обнулить весь массив, и это опять же в соответствии с правилом "перед началом подсчета поставь счетчик в значение 0".
Таким образом, в нашем классе мы может использовать методы для следующих действий:
· Обнуления массива счетчиков
· Генерацию серии с одновременным изменением значений в соответствующих ячейках массива счетчиков
· Вывод состояния массива счетчиков на экран
Решение может выглядеть так:
import java.util.*;