2015-01-13 3 views
0
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..!!").

ответ

2

Использование ch = reader.readLine().charAt(0);

Как вы делаете только reader.read() возвращает целое число, но строка остается в потоке чтения, который автоматически используется в следующем reader.readLine() вызова, таким образом, нам, похоже, компилятор не останавливаться на том, что но внутренне он получил всю линию, которую он хотел

надеюсь, что это поможет!

Удачи вам!

+0

Спасибо, это предложение работало для меня –

+0

принять ответ, если он помог вам .. – Vihar

+0

не комментируя, вам нужно нажать на клеща слева от ответа – Vihar

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); 
} 
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")); 
Смежные вопросы