Java中的队列无法正常工作

时间:2016-01-12 16:57:51

标签: java queue

class Que{
char q[];
int front , rear ;

Que(int size){
    q = new char[size];
    front = rear =0;
}
void push(char ch){
    if(rear == q.length){
        System.out.println("Que is Full");
    }
    else{
        q[rear++]=ch;
        System.out.println(ch + " Added");
    }
}
void pop(){
    if(front==rear){
        System.out.println("Que is Empty");

    }
    else{
        System.out.println(q[front] + " Is being popped ");
        front++;
    }
}
void disp(){

    char temp = q[front];
    for(int i = front;i<rear ; i++)
    {
        System.out.println(q[i]);
    }

}


 }
 class Example{

public static void main(String args[])
throws java.io.IOException{

    Que Sample1 = new Que(10);
    int opt = 1;
    char j,k;
    while(opt!=0){
        System.out.println("1-Add , 2 - Pop , 3 - Display");
        j = (char) System.in.read();
        if(j=='1'){
            System.out.println("What to push ?");
            k = (char)System.in.read();
             Sample1.push(k);
        }
        else if(j=='2'){
            Sample1.pop();
        }
        else if(j=='3'){
            Sample1.disp();
        }
        else if(j=='4'){
            opt = 0;
        }
        else{ System.out.println("Try Again");}

    }
}
}

这不起作用。当我编译并运行它时,它会向我显示主菜单,并且只要我按下1)ADD - 它会跳过显示来自该功能的“已添加”消息。 我做错了什么?

当我按下1(添加)时,它应该问我“推送什么”,但它不会等待我的输入并再次播放循环。

这就是显示的内容 -
1)ADD
2)流行
3)显示
1
什么推(没有输入)
添加(自动显示)
1)ADD
2)流行
3)显示

1 个答案:

答案 0 :(得分:2)

你在终端输入什么内容?

如果您输入多个字符(例如11甚至1<Enter>),则对System.in.read()的第二次调用将立即返回第二个字符:1或{{ 1}}。