2011-04-17 72 views
2
char charArray[] = new char[ 100 ]; 

    BufferedReader buffer = new BufferedReader(
      new InputStreamReader(System.in)); 
    int c = 0; 
    while((c = buffer.read()) != -1) { 
      char character = (char) c; 

如何將輸入的字符放入我的數組中?BufferedReader值轉換爲char數組

回答

7

使用正確的方法,它不正是你想要什麼:

char[] charArray = new char[100]; 
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in)); 
int actualBuffered = buffer.read(charArray,0,100); 

如文檔here指出,此方法是阻塞,只是當返回:

  • 字符指定數目已經讀取,
  • 基礎流的讀取方法返回-1,指示文件結束或
  • 基礎流的ready方法返回false,表示進一步的輸入請求會阻塞。
+0

這很好,因爲與普通流合約不同,BufferedReader會嘗試通過從基礎流中讀取多次來獲取請求的字符數。 – mdma 2011-04-17 17:18:37

0

您將需要另一個變量,該變量包含要將變量放入數組的位置(哪個索引)的索引。直通循環每次將添加字符作爲

charArray[index] = character; 

,然後你需要增加索引。

你要小心,不要過多的數據寫入到陣列(去過去100)

0
 char charArray[] = new char[ 100 ]; 
    int i = 0; 
    BufferedReader buffer = new BufferedReader(
     new InputStreamReader(System.in)); 
    int c = 0; 
    while((c = buffer.read()) != -1 && i < 100) { 
      char character = (char) c; 
      charArray[i++] = c; 
    } 

停止,當你閱讀100個字符。

+0

不會停下來 - 缺少'i ++'。 – Howard 2011-04-17 17:15:30

+0

哎呀....謝謝@霍華德 – 2011-04-17 17:16:09

0

您還可以使用Reader公共接口中提供的方法一次讀取數組中的所有字符。

char[] input = new char[10]; 
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
int size = reader.read(input); 

System.out.println(String.valueOf(input, 0, size)); 
System.exit(0);