import java.util.*;
public class ArrayQueueDemo
{
public static void main(String args[]){
Scanner In=new Scanner(System.in);
boolean flag=true;
System.out.println("输入队列长度大小");
int n=In.nextInt();
char c=' ';
ArrayQueue queue=new ArrayQueue(n);
while(flag){
System.out.println("s(显示队列)");
System.out.println("a(添加数据到队列)");
System.out.println("g(取出队列数据)");
System.out.println("h(显示队列头数据)");
System.out.println("e(退出程序)");
c=In.next().charAt(0); //1.得到单个字符;
switch(c){
case 's':
queue.showQueue(); //2.方法调用
break;
case 'a':
System.out.println("输入一个数据:");
queue.Add(In.nextInt());
break;
case 'g':
try{ //###3.异常输出方式
System.out.println("取出的数据为:"+queue.getQueue());
}
catch(Exception e){
System.out.println(e.getMessage());
}
break;
case 'h':
try{
System.out.println("头数据为:"+queue.getHead());
}
catch(Exception e){
System.out.println(e.getMessage());
}
break;
case 'e':
flag=false; //4.退出循环方式
break;
default :
break;
}
}
System.out.println("程序退出");
}
}
class ArrayQueue{
int Max; //队列长度
int front;//初始标记
int rear; //移动标记
int [] arr;
public ArrayQueue(int n){
Max=n;
front=-1;
rear=-1;
arr=new int[Max] ; //5.构造方法之数组分开写
}
public boolean isFull(){
return rear==Max-1;
}
public boolean isEmpty(){
return rear==front;
}
public void Add(int x){
if(isFull()){
System.out.println("队列已满,不能添加数据");
}
else{
rear++;
arr[rear]=x;
}
}
public int getQueue(){
if(isEmpty()){
throw new RuntimeException("队列为空,不能取出数据"); //6.数据异常抛出写法
}
else{
return arr[++front];}
}
public void showQueue(){
if(isEmpty()){
System.out.println("队列为空");
return;
}
else{
for(int i=0;i<arr.length;i++){
System.out.printf("arr[%d]=%d\n",i,arr[i]);
}
}
}
public int getHead(){
if(isEmpty()){
throw new RuntimeException("队列为空,不能得到头数据");
}
else{
return arr[front+1]; //注意:此处不能front++,否则队列相当于取出数据
}
}
}
原文:https://www.cnblogs.com/DongChenYi/p/11739466.html