練習文件:
QueueFullException.java
QueueEmptyException.java
固定隊列.java
QExcDemo.java
在這個專案中,為佇列類別(Queue)建立了兩個自訂異常,分別指示滿佇列和空佇列的錯誤情況。這些異常由 put() 和 get() 方法使用。
隊列異常:
FixedQueue 類別實作:
異常和FixedQueue類別代碼:
QueueFullException.java
public class QueueFullException extends Exception { int size; QueueFullException(int s) { size = s; } public String toString() { return "\nQueue is full. Maximum size is " + size; } }
QueueEmptyException.java:
public class QueueEmptyException extends Exception { public String toString() { return "\nQueue is empty."; } }
FixedQueue.java:
class FixedQueue implements ICharQ { private char q[]; private int putloc, getloc; public FixedQueue(int size) { q = new char[size]; putloc = getloc = 0; } public void put(char ch) throws QueueFullException { if (putloc == q.length) throw new QueueFullException(q.length); q[putloc++] = ch; } public char get() throws QueueEmptyException { if (getloc == putloc) throw new QueueEmptyException(); return q[getloc++]; } }
使用 QExcDemo 進行檢定:
QExcDemo類別模擬佇列的使用:
插入元素直到超過限制,拋出 QueueFullException。
它嘗試透過拋出 QueueEmptyException 從空隊列中刪除元素。
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("Attempting to store : " + (char) ('A' + i)); q.put((char) ('A' + i)); System.out.println(" - OK"); } } catch (QueueFullException exc) { System.out.println(exc); } try { for(i=0; i < 11; i++) { System.out.print("Getting next char: "); ch = q.get(); System.out.println(ch); } } catch (QueueEmptyException exc) { System.out.println(exc); } } }
更新了 ICharQ 介面:
ICharQ 現在在 put() 和 get() 方法中包含拋出異常,反映了固定隊列拋出的異常。
public interface ICharQ { void put(char ch) throws QueueFullException; char get() throws QueueEmptyException; }
預期輸出:
程式會顯示指示元素插入和刪除成功的訊息,以及錯誤訊息:
隊列已滿。當佇列已滿時,最大大小為 10。
隊列為空。當嘗試從空隊列中刪除元素時。
以上是嘗試在 Queue 類別中新增異常的詳細內容。更多資訊請關注PHP中文網其他相關文章!