Java数组模拟队列

风萧萧兮易水寒,吾当存高远

day2

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++,否则队列相当于取出数据
		}
	}

}

此篇是我学习‘’尚硅谷‘’韩顺平老师的讲解所写,目的就是为了练一下基本操作写法,老师讲的真的是好啊,不远的将来我的java也要像韩老师一样好 !hahah

posted @ 2019-10-25 18:06  东辰弈  阅读(250)  评论(2)    收藏  举报