繁体   English   中英

我的do-while循环似乎没有执行我的if语句

[英]My do-while loop doesn't seem to be executing my if statement

我是Java的新手,如果我的编程技能很差,请抱歉。 我的程序需要使用队列来模拟I / O缓冲区。 它不断接受用户输入。 如果用户插入O(Oh),则返回输入的第一行。 如果输入X,则需要结束。

这是我的程序:

public static void main(String[] args) {

   Queue<String> queue = new LinkedList<String>();

    Scanner input = new Scanner(System.in);
    String check = input.nextLine();

do {

  queue.add(check);

  if(check.equals("O")) {

     if(queue.peek() != null){
        String remove = queue.remove();
        System.out.println("Data: " + remove);
        }

     else if(queue.peek() == null) {
        System.out.println("Buffer empty");         
        }
  } 

 } while(!"X".equals(check)) ;

预期的输入输出为:

line1
line2
O
Data: line1
line3
line4
O
Data: line2
O
Data: line3
line5
O
Data: line4
O
Data: line5
O
Buffer empty 
X   

我的程序似乎没有执行我的if语句,因为它从不停止询问输入,也不会退出并且X由用户给出。

如果我缺少明显的东西,我感到抱歉。

问题是您需要在末尾再次读取输入,在if条件之后,您需要添加以下行:

check = input.nextLine();

这样,您将阅读下一个输入行,否则检查将始终与输入的第一件事相同。

首先,

String check = input.nextLine();

仅被调用一次,而应在循环结束时再次调用。 因此它不会更新。

您的input.nextLine()在循环之外,因此仅被调用一次,因此在每次循环迭代中都将输入添加到队列中时,这就是发生这种情况的原因。 以这种方式更改它:

String check;
do {
  check = input.nextLine();
  queue.add(check);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM