>  기사  >  Java  >  Queue 클래스에 예외를 추가해 보세요.

Queue 클래스에 예외를 추가해 보세요.

Patricia Arquette
Patricia Arquette원래의
2024-10-30 23:15:30662검색

Tente Isto  Adicione exceções à classe Queue

운동 파일:
QueueFullException.java
QueueEmptyException.java
고정큐.java
QExcDemo.java

이 프로젝트에서는 대기열 클래스(Queue)에 대해 가득 찬 대기열과 빈 대기열에 대한 오류 조건을 나타내는 두 개의 사용자 정의 예외가 생성되었습니다. 이러한 예외는 put() 및 get() 메소드에서 사용됩니다.

대기열 예외:

  • QueueFullException: 전체 대기열에 요소를 삽입하려고 할 때 예외가 발생했습니다.
  • 클래스에는 최대 대기열 크기를 저장하는 필드가 포함되어 있으며 toString() 메서드를 재정의하여 사용자 정의 메시지를 표시합니다.
  • QueueEmptyException: 빈 대기열에서 요소를 제거하려고 할 때 예외가 발생했습니다.
  • 또한 이 클래스는 toString()을 재정의하여 대기열이 비어 있을 때 메시지를 표시합니다.

FixedQueue 클래스 구현:

  • FixedQueue 클래스는 오류 조건이 발생할 때 QueueFullException 및 QueueEmptyException을 발생하도록 수정되었습니다.
  • 이를 위해 put() 및 get()의 서명에는 throws 절이 포함되어 있습니다.
  • 예외를 발생시키면 호출 코드가 오류를 더 효율적으로 처리할 수 있습니다.

예외 및 고정 대기열 클래스 코드:
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() 메서드에 발생 예외가 포함되어 있으며, 이는 FixQueue에서 발생한 예외를 반영합니다.

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

예상 출력:
프로그램은 요소 삽입 및 제거 성공을 나타내는 메시지와 오류 메시지를 표시합니다.
대기열이 가득 찼습니다. 대기열이 가득 찬 경우 최대 크기는 10입니다.
대기열이 비어 있습니다. 빈 대기열에서 요소를 제거하려고 할 때.

위 내용은 Queue 클래스에 예외를 추가해 보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.