Здесь:
c1=(char)br.read();
Это читает одиночный символ из вашего ввода.Я предполагаю, что вы ввели
yENTER
на клавиатуре.Дело в том, что вы читаете только этот символ, но не перевод строки / перевод строки.Поэтому эта часть «остается» в вашем вводе, и когда вы делаете последующую readLine()
, вы получаете эту ENTER часть, сводящуюся к пустой строке.
Одно решение: сделать все чтения с помощью readLine()
, а затем просто, например,
while(!stringFromUser.equalsIgnoreCase("n)) {
.В качестве альтернативы, вы можете просто сделать «фальшивый» readLine()
вызов до Integer.parseInt(br.readLine());
.
Наконец: я предполагаю, что вы используете (Buffered) Reader в System.in.Это не имеет особого смысла.Вместо этого вы можете использовать Scanner
.(см. здесь для некоторых указаний)