/
GermanezZ
/
JavaExercises
Обзор
Документация
Войти
/
GermanezZ
/
JavaExercises
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
AllMetanitLessons/GermaN/QExcDemo.java
170 строк
4 KB
germa
Уроки по Metanit
04 дек 2024, 20:39
04 дек 2024, 20:39
48d575a
Код
Авторство
О чём код?
package AllMetanitLessons.GermaN; public class QExcDemo { public static void main(String[] args) { FixedQueue q = new FixedQueue(10); char ch; int i; try{ //переполнение очереди for (i = 0; i<11; i++){ System.out.print("Попытка сохранения: " + (char) ('A' + i)); q.put((char) ('A' + i)); System.out.println(" - OK"); } System.out.println(); } catch (QueueFullException exc) { System.out.println(exc); } System.out.println(); try { //попытка извлечь символ из пустой очереди for (i = 0; i< 11; i++){ System.out.print("Получение очередного символа: "); ch = q.get(); System.out.println(ch); } }catch (QueueEmptyException exc){ System.out.println(exc); } } } class QueueFullException extends Exception{ int size; QueueFullException(int s){size = s;} public String toString(){ return "\n Очередь заполнена. Максимальный размер очереди: "+ size; } } class QueueEmptyException extends Exception{ public String toString(){ return "\nОчередь пуста!"; } } ///////////////////////////////////////////////////////// class FixedQueue implements INewQeue{ private final char[] q; private int putloc, getloc; public FixedQueue(int size){ q = new char[size+1]; putloc = getloc = 0; } @Override public void put(char ch) throws QueueFullException{ if(putloc == q.length-1){ throw new QueueFullException(q.length-1); } putloc++; q[putloc] = ch; } @Override public char get() throws QueueEmptyException{ if(getloc == putloc){ throw new QueueEmptyException(); } getloc++; return q[getloc]; } @Override public void reset() { getloc = putloc = 0; } } class CircularQeue implements INewQeue{ private char[] q; private int putlog,getlog; public CircularQeue(int size){ q = new char[size+1]; putlog = getlog = 0; } @Override public void put(char ch) { if(putlog+1 == getlog | ((putlog==q.length-1)&(getlog==0))){ System.out.println(" - Очередь заполнена."); return; } putlog++; if (putlog==q.length) putlog = 0; q[putlog] = ch; } @Override public char get() { if (getlog == putlog){ System.out.println("Очередь пуста."); return (char) 0; } getlog++; if(getlog == q.length) getlog = 0; return q[getlog]; } public void reset() { getlog = putlog = 0; } } class DynQeue implements INewQeue{ private char q[]; private int putlog,getlog; public DynQeue(int size){ q = new char[size+1]; putlog = getlog = 0; } @Override public void put(char ch) { if(putlog==q.length-1) { char[] t = new char[q.length * 2]; for (int i = 0; i < q.length; i++) t[i] = q[i]; q = t; } putlog++; q[putlog] = ch; } @Override public char get() { if (getlog == putlog){ System.out.println(" - Элемент пуст"); return (char) 0; } getlog++; return q[getlog]; } public void reset() { getlog = putlog = 0; } }