[英]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.