Java中的队列不工作 class-Que{ 字符q[]; 前,后; Que(整数大小){ q=新字符[大小]; 前=后=0; } 无效推送(char ch){ 如果(后==q.长度){ System.out.println(“Que已满”); } 否则{ q[后部++]=ch; 系统输出打印项次(ch+“添加”); } } void pop(){ 如果(前==后){ System.out.println(“Que为空”); } 否则{ System.out.println(q[front]+“正在弹出”); 前端++; } } void disp(){ 字符温度=q[前]; 对于(inti=front;i
您在终端中键入的内容Java中的队列不工作 class-Que{ 字符q[]; 前,后; Que(整数大小){ q=新字符[大小]; 前=后=0; } 无效推送(char ch){ 如果(后==q.长度){ System.out.println(“Que已满”); } 否则{ q[后部++]=ch; 系统输出打印项次(ch+“添加”); } } void pop(){ 如果(前==后){ System.out.println(“Que为空”); } 否则{ System.out.println(q[front]+“正在弹出”); 前端++; } } void disp(){ 字符温度=q[前]; 对于(inti=front;i,java,queue,Java,Queue,您在终端中键入的内容 如果键入多个字符,例如11或甚至1,则第二次调用System.in.read()将立即返回此第二个字符:1或您能给出控制台输出吗?这将有助于排除故障。如果可以,我将投票重新打开此。这是一个MCVE,所需的行为不是跳过显示“添加的”MSGyque类。您的类看起来很好。我能够获得您的应用程序通过清除系统来进行操作。在调用中。我相信您这里的问题是您的输入有问题。我建议查看扫描仪类,或修改您的系统。在调用中。这是了解发生了什么的最简单方法。这是编程的一个基本工具。如果您这样做,您就
如果键入多个字符,例如
11
或甚至1
,则第二次调用System.in.read()
将立即返回此第二个字符:1
或
您能给出控制台输出吗?这将有助于排除故障。如果可以,我将投票重新打开此。这是一个MCVE,所需的行为不是跳过显示“添加的”MSGyque类。您的类看起来很好。我能够获得您的应用程序通过清除系统来进行操作。在
调用中。我相信您这里的问题是您的输入有问题。我建议查看扫描仪
类,或修改您的系统。在
调用中。这是了解发生了什么的最简单方法。这是编程的一个基本工具。如果您这样做,您就可以查找System.in.read();
读取您的1
-但是您在键盘上按下的下一个操作是什么?回车键-在下一个read
调用中,它将获得\r
的“新行”。并尝试推送它-在打印新行后显示添加的消息。然后它循环返回顶部-在顶部读取下一个字符,即\n
来自println
,该字符显示重试
您的解决方案是使用扫描仪
-从扫描开始设置扫描仪ner scanner=new scanner(System.in);
-然后使用String result=scanner.nextLine();j=result.charAt(0);
代替j=(char)System.in.read();
您仍将按enter键,但它将一次读取一行,因此它将保持不变。我先按1,然后按enter键。不按System.in.read()需要按enter键才能接受字符输入?@BonnyMahajan尝试在不按enter键的情况下运行。@Destruktor能否告诉我如何在1之后不按enter键而接受输入
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");}
}
}
}