У меня есть небольшая проблема, пытающаяся выяснить, как вычисляется операция по модулю.Я создаю очередь, поэтому у меня есть круговой массив.я не могу понять, как работает эта операция по модулю.
Учитывая q: массив символов длиной 5 элементов, константа MAX дает максимальную длину массива "5", редко встречается int, представляющий первый доступныйпятно в массиве q
public void enqueue(Character c)throws FullQueueException{
if(size()== MAX -1){ //if only 1 place left, is full, throw exc
throw new FullQueueException("Queue is full");
}
q[rare]=c;
rare=(rare+1)%MAX;
}
Теперь, предположив, что редкое «первое пустое пятно» равно трем, какое будет редкое значение после завершения метода?это то, что я не получаю, редкий = (редкий + 1)% Макс означает редкий = 4% 5, что дает редкий = 0,8.
То же самое для размера метода:
public int size() {
return (MAX - front + rear) % MAX;
}
Учитывая, front, переменная int, которая представляет первый элемент в массиве. Предположим, что front равен 1, а редкий 4, поэтому в массиве 3 элемента, поэтому размер равен (5-1 + 4)% 5, что составляет 8% 5, чтодает 1,6, в то время как фактический размер 3 Любое предложение?это может быть больше математики, чем Java, но, возможно, некоторые из вас сталкивались с такими же сомнениями раньше.Спасибо!