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)显示
答案 0 :(得分:2)
你在终端输入什么内容?
如果您输入多个字符(例如11
甚至1<Enter>
),则对System.in.read()
的第二次调用将立即返回第二个字符:1
或{{ 1}}。