Heim  >  Artikel  >  Java  >  Versuchen Sie Folgendes: Fügen Sie Ausnahmen zur Queue-Klasse hinzu

Versuchen Sie Folgendes: Fügen Sie Ausnahmen zur Queue-Klasse hinzu

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 23:15:30737Durchsuche

Tente Isto  Adicione exceções à classe Queue

Übungsdateien:
QueueFullException.java
QueueEmptyException.java
FixedQueue.java
QExcDemo.java

In diesem Projekt wurden zwei benutzerdefinierte Ausnahmen für die Warteschlangenklasse (Queue) erstellt, die Fehlerbedingungen für eine volle Warteschlange und eine leere Warteschlange anzeigen. Diese Ausnahmen werden von den Methoden put() und get() verwendet.

Warteschlangenausnahmen:

  • QueueFullException: Ausnahme wird ausgelöst, wenn versucht wird, ein Element in eine volle Warteschlange einzufügen.
  • Die Klasse enthält ein Feld zum Speichern der maximalen Warteschlangengröße und überschreibt die toString()-Methode, um eine benutzerdefinierte Nachricht anzuzeigen.
  • QueueEmptyException: Ausnahme wird ausgelöst, wenn versucht wird, ein Element aus einer leeren Warteschlange zu entfernen.
  • Die Klasse überschreibt auch toString(), um eine Nachricht anzuzeigen, wenn die Warteschlange leer ist.

FixedQueue-Klassenimplementierung:

  • Die FixedQueue-Klasse wird so geändert, dass sie QueueFullException und QueueEmptyException auslöst, wenn Fehlerbedingungen auftreten.
  • Dazu enthalten put() und get() eine throws-Klausel in ihren Signaturen.
  • Durch das Auslösen von Ausnahmen ermöglichen Sie dem aufrufenden Code, Fehler effizienter zu behandeln.

Ausnahmen und FixedQueue-Klassencode:
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++];
  }
}

Testen mit QExcDemo:
Die QExcDemo-Klasse simuliert die Verwendung der Warteschlange:
Fügt Elemente ein, bis das Limit überschritten wird, und löst eine QueueFullException aus.
Es versucht, Elemente aus einer leeren Warteschlange zu entfernen, indem es eine QueueEmptyException auslöst.

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);
    }
  }
}

Aktualisierte ICharQ-Schnittstelle:
ICharQ enthält jetzt Ausnahmen in den Methoden put() und get(), die die von FixedQueue ausgelösten Ausnahmen widerspiegeln.

public interface ICharQ {
  void put(char ch) throws QueueFullException;
  char get() throws QueueEmptyException;
}

Erwartete Ausgabe:
Das Programm zeigt Meldungen über den Erfolg des Einfügens und Entfernens von Elementen sowie Fehlermeldungen an:
Die Warteschlange ist voll. Die maximale Größe beträgt 10, wenn die Warteschlange voll ist.
Die Warteschlange ist leer. beim Versuch, ein Element aus einer leeren Warteschlange zu entfernen.

Das obige ist der detaillierte Inhalt vonVersuchen Sie Folgendes: Fügen Sie Ausnahmen zur Queue-Klasse hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn