Maison > Java > javaDidacticiel > le corps du texte

Essayez ceci Ajouter des exceptions à la classe Queue

Patricia Arquette
Libérer: 2024-10-30 23:15:30
original
666 Les gens l'ont consulté

Tente Isto  Adicione exceções à classe Queue

Fichiers d'exercices :
QueueFullException.java
QueueEmptyException.java
FixeQueue.java
QExcDemo.java

Dans ce projet, deux exceptions personnalisées ont été créées pour la classe de file d'attente (Queue), qui indiquent les conditions d'erreur pour la file d'attente pleine et la file d'attente vide. Ces exceptions sont utilisées par les méthodes put() et get().

Exceptions de file d'attente :

  • QueueFullException : exception levée lors de la tentative d'insertion d'un élément dans une file d'attente complète.
  • La classe comprend un champ pour stocker la taille maximale de la file d'attente et remplace la méthode toString() pour afficher un message personnalisé.
  • QueueEmptyException : exception levée lors de la tentative de suppression d'un élément d'une file d'attente vide.
  • La classe remplace également toString() pour afficher un message lorsque la file d'attente est vide.

Implémentation de la classe FixedQueue :

  • La classe FixedQueue est modifiée pour lancer QueueFullException et QueueEmptyException lorsque des conditions d'erreur se produisent.
  • Pour cela, put() et get() contiennent une clause throws dans leurs signatures.
  • En lançant des exceptions, vous permettez au code appelant de gérer les erreurs plus efficacement.

Exceptions et code de classe 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;
  }
}

Copier après la connexion

QueueEmptyException.java :

public class QueueEmptyException extends Exception {
  public String toString() {
    return "\nQueue is empty.";
  }
}

Copier après la connexion

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++];
  }
}

Copier après la connexion

Test avec QExcDemo :
La classe QExcDemo simule l'utilisation de la file d'attente :
Insère des éléments jusqu'à dépasser la limite, en lançant QueueFullException.
Il essaie de supprimer des éléments d'une file d'attente vide en lançant 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);
    }
  }
}

Copier après la connexion

Interface ICharQ mise à jour :
ICharQ contient désormais des exceptions levées dans les méthodes put() et get(), reflétant les exceptions levées par FixedQueue.

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

Copier après la connexion

Résultat attendu :
Le programme affiche des messages indiquant le succès des insertions et suppressions d'éléments, ainsi que des messages d'erreur :
La file d'attente est pleine. La taille maximale est de 10 lorsque la file d'attente est pleine.
La file d'attente est vide. lorsque vous essayez de supprimer un élément d'une file d'attente vide.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!