BufferedReader读取控制台输入
Java不像C那样直接用
scanf
即可从控制台读入数据,读取数据很麻烦。这里推荐
BufferedReader
,可以从
控制台 和
文件 中读取数据。需要
import java.io.BufferedReader
和
import java.io.InputStreamReader
从控制台读取数据
readline() 方法
一次可以读取一行,以换行符作为一行的结束(返回的字符串不包括换行符),然后继续往下读。
捕获异常
如果不使用 throw
,则可以使用 try-catch
语句,不过需要注意:catch的是 IOException
,也可以是 Exception
。
只不过 Exception
是各种 Exception
的父类,包括 IOException
, NumberFormatException
等等,范围比较宽泛。(仍然推荐具体的IOException)
- 一般情况下,先捕获较为具体的
Exception
,然后再是总的Exception
1. 代码示例:只读一行
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
String data = br.readline();
} catch (IOException e) {
e.printStackTrace();
}
2. 代码示例:读取多行
这里注意读取格式,只要读取一行后,就不会再读取这一行了,所以不能直接用 br.readline() != null
来判断,需要先存到一个变量,再与null进行比较
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String a = null;
try {
while ((a = br.readline()) != null) {
System.out.println(a);
}
catch (IOException e) {
e.printStackTrace();
}
读取文件内容
BufferedReader
的参数为FileReader
,顾名思义,是读文件用的
可以用readLine
一行行地读取
参考:How to read a file line by line
BufferedReader API
try {
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrack();
}
关于 try-catch
语句的拓展
try-catch
中的变量有作用域,在该语句中定义的变量是不能拿到语句外使用的,所以需要在语句外定义变量,然后在 try-catch
中修改