public void readList() throws IOException{
char ch = 'N';
String entry;
System.out.println("__Enter entries for grocery list one__");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
do{
System.out.println("Enter Grocery Item..!!");
entry = reader.readLine();
this.l1.add(entry);
System.out.println("Do you want to continue..!!(Y or N)");
ch = (char)reader.read();
}while(ch == 'Y' || ch == 'y');
}
在此对象中,l1
的类型为LinkedList<String>
。在do-while
循环的第一次迭代中,一切运行正常,但在第一次迭代之后:
entry = reader.readLine();
this.l1.add(entry);
被跳过,System.out.println("Do you want to continue..!!(Y or N)")
后System.out.println("Enter Grocery Item..!!")
正在执行。
答案 0 :(得分:2)
使用ch = reader.readLine().charAt(0);
正如你只做一个reader.read()
它返回一个整数,但字符串仍保留在读取器流中,这将在下一个reader.readLine()
调用中自动使用,因此对我们来说看起来编译器没有停止那条线,但在内部它得到了它想要的整条线
希望这有帮助!
祝你好运!答案 1 :(得分:1)
你的read()
只能读取一个字符而且我打算在输入该字符后点击<enter>
,所以当你执行readLine()
时,它会读取该行的其余部分为空。
我建议您使用其他格式,例如
while(true) {
System.out.println("Enter Grocery Item.. (leave the line empty when done)");
String entry = reader.readLine();
if (entry == null || entry.isEmpty())
break;
this.l1.add(entry);
}
答案 2 :(得分:0)
在read()
方法中,单个字符读取为0到65535范围内的整数,然后按Enter
键,使readLine()
为空行。你应该尝试
do{
System.out.println("Enter Grocery Item..!!");
entry = reader.readLine();
this.l1.add(entry);
System.out.println("Do you want to continue..!!(Y or N)");
entry= reader.readLine();
}while(entry.equalsIgnoreCase("Y"));