第三讲
首先声明一下,这是我自己 的一个学习过程,只是想要记录下来,如果有错误还请各位大神指出,谢谢啦
1、 InputStreamReader m=new InputStreamReader(System.in);
BufferedReader n=new BufferedReader(m);
System.out.println("请输入");
//获取用户输入的文本行
String name=n.readLine();//此时会抛出异常,要进行处理,第一种处理抛出异常,第二种处理try catch
System.out.println(name);
结果是:
请输入
13324sdgdzdga啥地方睡得着
13324sdgdzdga啥地方睡得着
2、
System.out.println("请输入");
Scanner k=new Scanner(System.in);
String l=k.nextLine();
int o=k.nextInt();
float p=k.nextFloat();
double q=k.nextDouble();
byte s=k.nextByte();
3、Scanner和BufferedReader区别
通俗地讲Scanner是直接往硬盘里写数据,而BufferedReader是先把数据读到缓存区然后再写进硬盘里的。BufferedReader的效率比Scanner的高。BufferedReader是字符输入流,不能读入基本类型值;然而Scanner是一个用正则表达式处理过的流,可以读入基本类型值。
Scanner一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器;是控制台应用程序最为常用的文本输入方式。 Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
所以说Scanner不能输入空格,如果你希望取得含有空格的字符串BufferedReader可以做到。
BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取;速度要比Scanner快。BufferedReader 可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
4、分别什么时候会用Scanner,什么时候使用BufferedReader呢?
简单的说就是希望获得基本数据类型的时候用Scanner;希望获得完整的字符串的时候(尤其是包含有空白字符的时候)用BufferedReader。
使用Scanner来取得使用者的输入很方便,但是它以空白来区隔每一个输入字串,在某些时候并不适用,因为使用者可能输入一个字串,中间会包括空白字元,而您希望取得完整的字串。这是就要用BufferedReader,他是Java.io套件中的一个类别,所以用这个的时候要引入包(
import java.io.BufferedReader;
import java.io.InputStreamReader;),
它是以回车符来结束输入的;并且使用BufferedReader物件的readLine()方法必须处理IOException例外(exception),例外处理机制是Java提供给程式设计人员捕捉程式中可能发生的错误所提供的机制。
/**
* 从文件中输入方法;(File、Scanner)和(File、FileInputStream、InputStreamReader、BufferedReader)
* 从控制面板输入方法(Scanner)和(InputStreamReader、BufferedReader)
*/
package com.inout;
import java.io.*;
import java.util.*;
public class One {
public static void main(String[] args) {
//从文件中输入方法1
File f = new File("D:\\test\\a.txt");
Scanner a = null;
try {
a = new Scanner(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String s1 = a.nextLine();
System.out.println(s1);
//从文件中输入方法2
InputStreamReader i = null;
try {
i = new InputStreamReader(new FileInputStream(f));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
BufferedReader b = new BufferedReader(i);
String s22 = null;
try {
s22 = b.readLine();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(s22);
//从控制面板输入方法1
Scanner a2 = new Scanner(System.in);
String s12 = a2.nextLine();
System.out.println(s12);
//从控制面板输入方法2
InputStreamReader i2 = new InputStreamReader(System.in);
BufferedReader b2 = new BufferedReader(i2);
String s222 = null;
try {
s222 = b2.readLine();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(s222);
}
}
* 从文件中输入方法;(File、Scanner)和(File、FileInputStream、InputStreamReader、BufferedReader)
* 从控制面板输入方法(Scanner)和(InputStreamReader、BufferedReader)
*/
package com.inout;
import java.io.*;
import java.util.*;
public class One {
public static void main(String[] args) {
//从文件中输入方法1
File f = new File("D:\\test\\a.txt");
Scanner a = null;
try {
a = new Scanner(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String s1 = a.nextLine();
System.out.println(s1);
//从文件中输入方法2
InputStreamReader i = null;
try {
i = new InputStreamReader(new FileInputStream(f));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
BufferedReader b = new BufferedReader(i);
String s22 = null;
try {
s22 = b.readLine();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(s22);
//从控制面板输入方法1
Scanner a2 = new Scanner(System.in);
String s12 = a2.nextLine();
System.out.println(s12);
//从控制面板输入方法2
InputStreamReader i2 = new InputStreamReader(System.in);
BufferedReader b2 = new BufferedReader(i2);
String s222 = null;
try {
s222 = b2.readLine();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(s222);
}
}