A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 包旭 中级黑马   /  2014-12-16 22:27  /  1207 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/***** HelloWorld.java *****/
import java.io.*;

public class aa
{
  public static void main( String[ ] args )
  {
    byte[] ba = new byte[10];
    InputStream stdin = System.in;//这句貌似上转型
    System.out.println("Please input a string: ");
    try{
        stdin.read(ba);  //我想问下,这句到底是什么意思,详细点,谢咯
    }catch(IOException ie){
         System.out.println();
    }
   
    String s = new String(ba);
    System.out.println("The string read in is "+ s);
  }
}     System.in.read中,好像read这个函数只能一次读一个字符的啊?为什么那句可以得到整个字符串??? 如果改为ba=stdin.read();的话,有是错的耶,各位大哥大姐帮忙解决下,我们平时是将键盘的数据输入时,那么这些数据是在缓冲区,然后才调入内存的,那么read(ba)函数应该是将缓冲区里面的数据转村到ba、这个数组啥,对不?为什么结果是恰好相反,?能不能解释下?

2 个回复

倒序浏览
byte[] ba = new byte[10]这是定义一个缓存byte数组, stdin.read(ba)这是将stdin流读到的内容存进ba数组中,现在ba数组已经有内容了,String s = new String(ba)这句话就是将byte数组转化为你看得懂的字符串。stdin.read()这个方法不是这么用的,这方法返回int类型,不是byte数组,如果返回-1表示内容已经读完了。建议楼主多看看IO这块知识
回复 使用道具 举报
后悔药 发表于 2014-12-16 22:52
byte[] ba = new byte[10]这是定义一个缓存byte数组, stdin.read(ba)这是将stdin流读到的内容存进ba数组 ...

恩恩
                                   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马