私はJavaを使い慣れていないので、プログラミングスキルが悪いとすみませます。私のプログラムは、I/Oバッファをシミュレートするためにキューを使用する必要があります。ユーザー入力の行を継続的に受け入れます。ユーザーがO(Oh)を挿入すると、入力された最初の行が返されます。 Xが入力された場合は、それを終了する必要があります。私のdo-whileループはif文を実行していないようです
これが私のプログラムである:
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はユーザによって与えられる。
わかりやすいものが見つからない場合は申し訳ありません。そうでない場合は、常になります確認し、
check = input.nextLine();
あなたは次のinputlineを読んで、この方法:
「入力を求めることは決してありません」 - 不可能です。入力部分は**ループの前**です。入力が一度だけ要求され、入力が 'X'と異なる場合は無限ループになります。おそらく、古いバージョンのコードを投稿したでしょうか? – BackSlash