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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 薄炳鑫 黑马帝   /  2012-6-13 17:26  /  1883 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 薄炳鑫 于 2012-6-13 18:27 编辑

第一种老毕讲的键盘录入的方法:
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
第二种方法是在java核心技术一书中的方法:
Scanner in = new Scanner(System.in);

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
第一种方法使用readLine()方法返回值是String类型。如果想获取int或float类型,则自己需要写类型转换函数就行转换,
第二种方法,简单。
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.Scanner;

  5. public class MainClass
  6. {
  7.         public static void method1()
  8.         {
  9.                 //使用Scanner
  10.                 Scanner scanner=new Scanner(System.in);
  11.                 System.out.print("Please input a number:");
  12.                 int num=scanner.nextInt();  //获取整数值
  13.                 System.out.println("The number you input is:"+num);
  14.                 System.out.println("----------------------------");
  15.                 System.out.print("Please input some character:");
  16.                 String str=scanner.next();  //获取字符串值
  17.                 System.out.println("The string you input is:"+str);
  18.                
  19.         }
  20.         public static void method2()
  21.         {
  22.                 //使用BufferedReader
  23.                 try
  24.                 {
  25.                         BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
  26.                         System.out.print("Please input a number:");
  27.                         String str=reader.readLine();  //获取字符串
  28.                         System.out.println("The number you input is:"+str);
  29.                        
  30.                 } catch (IOException e)
  31.                 {
  32.                         e.printStackTrace();
  33.                 }
  34.         }
  35. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
System.in提供的 read方法每次只能读取一个字节的数据,而我们平时所应用的通常是读取一个字符串或者是一个数字,所以read方法所以提供的功能,对我们来说并没有太 大的用处
使用BufferedReader来取得输入,理解起来要复杂得多.但是使用这个方法是固定的,每次使用前先如法炮制就可以了.
回复 使用道具 举报
Scanner书写方便,但他遇空格符就返回输入内容。 如果如果要输入带空格的,比如一句英语。还得要靠BufferedReader
回复 使用道具 举报
本帖最后由 云惟桉 于 2012-6-13 17:56 编辑

1、性质上不一样:BufferedReader是io的流对象,而Scanner是util工具包中的工具类。
2、装饰对象不一样:BufferedReader装饰的是字符流对象,而Scanner可以装饰流对象,也可以用于操作文件,信道等等。
3、使用方式不一样:BufferedReader里基本调用父类的方法,并装饰后使用比如newLine(),readLine()等方法;
    Scanner使用的方法太多了,具体可以参照API文档,Scanner给程序员的操作带来很大的便利,我想着也是核心技术用来举例的原因,其普适性较强。
4、实现接口不一样:BufferedReader实现的是Closeable和Readable接口,可以实现close和read的基本操作。
    Scanner实现的是Iterator<String>接口,具有迭代操作字符串的特点,即扫描功能。
5、互用对称性不一样:BufferedReader不可以装饰Scanner,但是Scanner可以装饰BufferedReader
6、结束标记不一样:BufferedReader以读到结束符为标记,而Scanner以侦测到底层流抛出IOException为结束标记。

纯属个人理解,希望能帮到楼主~

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 怎一个牛字了得~~

查看全部评分

回复 使用道具 举报
云惟桉 发表于 2012-6-13 17:53
1、性质上不一样:BufferedReader是io的流对象,而Scanner是util工具包中的工具类。
2、装饰对象不一样:Bu ...

虽然现在有的不是很明白 先了解这么个意思 等以后接触深了 理解也就会深了吧
呵呵
谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马