2011-04-17 209 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);