黑马程序员技术交流社区
标题:
键盘录入两种方式的区别?<已解决>
[打印本页]
作者:
薄炳鑫
时间:
2012-6-13 17:26
标题:
键盘录入两种方式的区别?<已解决>
本帖最后由 薄炳鑫 于 2012-6-13 18:27 编辑
第一种老毕讲的键盘录入的方法:
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
第二种方法是在java核心技术一书中的方法:
Scanner in = new Scanner(System.in);
作者:
王明明
时间:
2012-6-13 17:29
第一种方法使用readLine()方法返回值是String类型。如果想获取int或float类型,则自己需要写类型转换函数就行转换,
第二种方法,简单。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class MainClass
{
public static void method1()
{
//使用Scanner
Scanner scanner=new Scanner(System.in);
System.out.print("Please input a number:");
int num=scanner.nextInt(); //获取整数值
System.out.println("The number you input is:"+num);
System.out.println("----------------------------");
System.out.print("Please input some character:");
String str=scanner.next(); //获取字符串值
System.out.println("The string you input is:"+str);
}
public static void method2()
{
//使用BufferedReader
try
{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Please input a number:");
String str=reader.readLine(); //获取字符串
System.out.println("The number you input is:"+str);
} catch (IOException e)
{
e.printStackTrace();
}
}
}
复制代码
作者:
王晓新
时间:
2012-6-13 17:33
System.in提供的 read方法每次只能读取一个字节的数据,而我们平时所应用的通常是读取一个字符串或者是一个数字,所以read方法所以提供的功能,对我们来说并没有太 大的用处
使用BufferedReader来取得输入,理解起来要复杂得多.但是使用这个方法是固定的,每次使用前先如法炮制就可以了.
作者:
李海晓
时间:
2012-6-13 17:40
Scanner书写方便,但他遇空格符就返回输入内容。 如果如果要输入带空格的,比如一句英语。还得要靠BufferedReader
作者:
云惟桉
时间:
2012-6-13 17:53
本帖最后由 云惟桉 于 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为结束标记。
纯属个人理解,希望能帮到楼主~
作者:
王明明
时间:
2012-6-13 21:09
云惟桉 发表于 2012-6-13 17:53
1、性质上不一样:BufferedReader是io的流对象,而Scanner是util工具包中的工具类。
2、装饰对象不一样:Bu ...
虽然现在有的不是很明白 先了解这么个意思 等以后接触深了 理解也就会深了吧
呵呵
谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2