2012-06-03 2 views
1
InputStreamReader inp= new InputStreamReader(System.in); 
do 
{ 
    BufferedReader br = new BufferedReader(inp); 
    System.out.println("Enter Roll number : "); 
    int rno= Integer.parseInt(br.readLine()); 

    System.out.println("Enter name: "); 
    String name= br.readLine(); 

    System.out.println("Continue y/n: "); 
    char ans=(char)br.read(); 
} while(ans=='y');  

Как я могу написать BufferedReader вне цикла? Если я использую его снаружи, она показывает следующее исключение:Как использовать BufferedReader вне цикла для ввода ввода с клавиатуры?

java.lang.numberformatexception for input string at    
    java.lang.Integer.parseInt(Integer.java:468) 

Есть ли какой-либо механизм для промывки BufferedReader? Что может быть сделано??

+0

Я ответил на аналогичный вопрос здесь: http://stackoverflow.com/questions/7635917/read-a-text-file-using-bufferedreader-and-scanner – aioobe

ответ

0

Это не «хорошо», но работал для меня - я добавил br.readLine():

public static void main(String args[]) throws IOException { 
    BufferedReader br = null; 
    try { 
     InputStreamReader inp = new InputStreamReader(System.in); 
     br = new BufferedReader(inp); 
     char ans; 
     do { 
      System.out.println("Enter Roll number : "); 
      int rno = Integer.parseInt(br.readLine()); 

      System.out.println("Enter name: "); 
      String name = br.readLine(); 

      System.out.println("Continue y/n: "); 
      ans = (char) br.read(); 
      br.readLine(); 
     } while (ans == 'y'); 
    } finally { 
     if (br != null) { 
      br.close(); 
     } 
    } 
} 
+0

@Ridhi Jain Чтобы объяснить, почему это необходимо, 'read()' читает 'y', но в буфере все еще есть новая строка, потому что вам пришлось набирать новую строку после «y», чтобы заставить программу принять ее. 'readLine()' обрабатывает новую строку так, что следующий 'parseInt()' не пытается ее проанализировать. – EJP

Смежные вопросы