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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾公亮 黑马帝   /  2011-9-30 19:16  /  1959 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

键盘输入字符有哪些方法?

4 个回复

倒序浏览
黑马网友  发表于 2011-9-30 21:23:03
沙发
InputStream   is   =   System.in;
然后从   is   中读入。
回复 使用道具 举报
黑马网友  发表于 2011-9-30 22:32:06
藤椅
今天突然发现有这个方法:  
     Scanner sc = new Scanner(System.in);
     String str= sc.next();
和这种方法:
    BufferedReader bfd = new BufferedReader(new InputStreamReader(System.in));
       String str=bfd.readLine();
它们在执行上有区别吗?
回复 使用道具 举报
黑马网友  发表于 2011-9-30 22:36:39
板凳
有多种,我就在此说两种吧:
一:InputStreamReader:
String str;

InputStreamReader ir;

boolean first = true;

   int c;
  
   System.out.println("input the String:");
  
   try{
   
    while((c = ir.read()) != '\r' ){
   
     if(first){
     
      System.out.print("get string:");
     
      first = false;
     
     }else{
     
      System.out.print(".");
     
     }
   
     str = str+(char)c;
   
     System.out.print((char)c +"("+c+")");
   
    }

这个方法比较笨拙并且适合输入一次字符串的情况,如果需要多次输入字符串那将会出现问题,这个问题很隐晦,在你第二次输入字符串以后包括第二次输入的字符串都会得到一个'\t'字符在字符串的开始,这个问题处理很棘手的,并且如果不注意就发现不了,如果在以后的字符串的操作中有字符串转换那将更麻烦,测试输入字符串的长度会发现长度是你输入的长度+1,很KB(恐怖)的。

二 BufferReader流

BufferedReader   buffer=new   BufferedReader(new   InputStreamReader(System.in));   
      
String    str=buffer.readLine();

这个方法很方便,又能让你想输入几次输入几次,不会出现上面那个问题。因为每次都会创建一个新的输入流,因此每次输入的不会相互影响。

比较这两种方法主要是为了区分在不同的情况下使用不同的方法,不一定方法一没有用,当你需要的不是字符串而是字符时,方法一会更方便。
回复 使用道具 举报
黑马网友  发表于 2011-9-30 22:41:24
报纸
都是用InputStreamReader来把标准输入流System.in转换成字符流,用BufferedReader只不过是把InputStreamReader包装成了有缓冲的输入流,性能比直接用InputStreamReader好。

评分

参与人数 1技术分 +2 收起 理由
wangfayin + 2

查看全部评分

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