2012-06-03 27 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