2016-04-21 185 views
1
public class Pack1 { 
    public static void main(String ar[]) throws IOException { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.println("enter the character"); 
     char c=(char)br.read(); 
     System.out.println(c); 
     System.out.println("enter the integer"); 
     long l=Integer.parseInt(br.readLine()); 
     System.out.println("long l="+l); 

     System.out.println(c); 
    } 
} 
+0

那麼你的問題究竟是什麼? – Mureinik

+0

我想先採取字符輸入,然後int輸入,但它顯示數字格式異常 –

回答

3

比方說,用戶類型X並按下回車鍵上的第一個問題,然後類型123和壓在第二個問題中輸入,這將意味着輸入流包含下列字符:

X <CR> 1 2 3 <CR> 

當你請致電read(),您只能閱讀X。當您撥打readLine()時,您會看到<CR>並返回空白字符串。

1 2 3 <CR>仍然在輸入流中未讀。

解決方法:在閱讀X跳過過去的路線,使用readLine()其餘閱讀XString後調用readLine(),而不是作爲一個char

FYI:這是完全一樣的問題,人們繼續使用時Scanner和混合呼叫nextLine()與調用其他nextXxx()方法,如nextInt()有。

+0

因此,每當我必須採取字符輸入我必須輸入字符串,然後選擇第一個字符..? –

+0

您正在以面向行的方式提示用戶,例如,鍵入回答,按回車,鍵入回答,按回車鍵,這樣您也應該以面向行的方式讀取輸入,特別是如果您一次只請求一個值。 ---另外,請記住驗證,例如如果用戶按Enter鍵而不輸入任何內容,那麼什麼?或者當你詢問一個號碼時輸入'abc'。 – Andreas

0

更改此:

long l=Integer.parseInt(br.readLine()); 

到:

long l=Long.parseLong(br.readLine(), 10); 

這是因爲你正試圖將串地龍,而不是一個整數類型轉換。