/**
* BufferReader与Scanner的区别进行比较
* Scanner 需要传入System.in作为参数,这个我们可以看作是通过其内部机制将System.in包装起来
* 而实现数据的读取工作,Scanner对象通过一系列的in.nextXxx();方法来读取相应的基本类型的数据
* 然而,Scanner读取数据是按空格符,Tab键,Enter键。只要遇到其中之一,Scanner的方法就会返回
* 下一个输入。如果我们的数据有空格,我们就不会得到我们想要的数据,这样我们就要考虑到BufferReader
* 来读取数据啦。BufferReader读取数据比较固定,这样格式也就相对来说比较单一,读取数据的方法如下:
* BufferReader br=new BufferReader(new InputStreamReader(System.in))
* z这个BufferReader对象通过readline()方法来读取数据,readLine()是按Enter回车来读取
* 一行数据的,只要在回车键之前的都会被readLine();方法返回。
*/
public class MyLog{
public static void main(String[] args) throws IOException{
String str;
int a;
//字符流读取键盘上的数据
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
try {
//由于br是一个字符一个字符进行读取的,如果用read()的话,当你输入23时,一个read()只能读2,3还需要一个read()才能读取
//所以对此处理只能用readLine,读取一行,再进行转换的办法
str=br.readLine();
a=Integer.parseInt(str, 10);
System.out.println(a);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//字节流读取键盘上的数据
DataInputStream dis=new DataInputStream(System.in);
try{
//输出为不是想要的,会将你输入的num\r\n作为一个int进行解析
//a=dis.readInt();
//System.out.println(a);
str=dis.readLine();
a=Integer.parseInt(str);
System.out.println(a);
}catch(Exception e){
e.printStackTrace();
}
//综合比较,对于读取键盘上的数据,建议还是使用Scanner,比较方便
Scanner in=new Scanner(System.in);
//可以输入字母或数字
str=in.next();
System.out.println(str);
//只能输入数字,否则会报异常
a=in.nextInt();
System.out.println(a);
//流用完需要进行关闭
br.close();
dis.close();}}