import java.awt.Font;
import java.util.Scanner;
import javax.management.RuntimeErrorException;
public class CircleArrayQueueDemo {

public static void main(String[] args) {    //创立队列    CircleArrayQueue circleArrayQueue = new CircleArrayQueue(4);    char key = ' ';    Scanner scanner = new Scanner(System.in);    boolean loop = true;    while(loop) {        System.out.println("s(show):显示队列");        System.out.println("e(exit):退出程序");        System.out.println("a(add):增加数据到队列");        System.out.println("g(get):从队列取出数据");        System.out.println("h(head):查看队列头的数据");        key = scanner.next().charAt(0);        switch (key) {        case 's':            circleArrayQueue.showQueue();            break;        case 'e':            circleArrayQueue.showQueue();            break;        case 'a':            System.out.println("输出一个数");            int value = scanner.nextInt();            circleArrayQueue.addQueue(value);            break;        case 'g':            try {                int res = circleArrayQueue.getQueue();                System.out.printf("取出的数据是%d\n",res);            }catch (Exception e) {                System.out.println(e.getMessage());            }            break;        case 'h':            try {                int res = circleArrayQueue.headQueue();                System.out.printf("队列头的数据是%d\n",res);            }catch (Exception e) {                System.out.println(e.getMessage());            }            break;        default:            scanner.close();            loop = false;            break;        }    }    System.out.println("程序退出");}

}
//队列
class CircleArrayQueue{

private int maxsize;private int front;private int rear;private int[] arr;//结构器public CircleArrayQueue(int arrmaxsize) {    maxsize = arrmaxsize;    front = 0;    rear = 0;    arr = new int[maxsize];}//判满public boolean isFull() {    return (rear+1)%maxsize == front;}//判空public boolean isEmpty() {    return rear == front;}//入队public void addQueue(int n) {    if(isFull()) {        System.out.println("队列已满,不能再增加!");        return;    }    //增加数据    arr[rear] = n;    //rear[农产品期货](https://www.gendan5.com/cf/af.html)后移    rear = (rear + 1) % maxsize;}//出队public int getQueue() {    if(isEmpty()) {        throw new RuntimeException("队列为空,不可取出元素!");    }    //取值    int value = arr[front];    //front后移    front = (front + 1)%maxsize;    return value;}//遍历public void showQueue() {    if(isEmpty()) {        System.out.println("队列为空!");        return;    }    for(int i = front; i < front +  size(); i++) {        System.out.printf("arr[%d]=%d\n",i % maxsize, arr[i % maxsize]);    }}//求队列无效数据的个数public int size() {    return (rear + maxsize - front) % maxsize;}//显示队头元素public int headQueue() {    if(isEmpty()) {        throw new RuntimeException("队列为空,不可取出元素!");    }    return arr[front];}

}