这两种从用户那里获取输入的方式有什么区别?
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num=Integer.parseInt(br.readLine());
和
Scanner sc = new Scanner(System.in);
int num=sc.nextInt();
这里假设软件包io和util相应地导入了。
答案 0 :(得分:1)
这些只是两只完全不同的动物。从流中读取时,您正在读取简单的数量...字符,字节,行。然后,如您所示,您必须添加其他代码以更高级别的方式解释这些数量。
根据Scanner文档:
一个简单的文本扫描器,可以解析原始类型和字符串 使用正则表达式。
因此,扫描程序在流的顶部添加了另一级功能。填充输入。它将输入的数据分开,并尝试以各种方式解释它,而不仅仅是字节或行。如果使用简单的流,扫描仪会为您提供很多功能,您必须编写自己的代码。
要更明确地回答您的特定问题...两个建议的代码块都可以为您提供所需的结果吗?如果是这样,并且如果您不打算继续从流中读取任何其他内容,那么使用Scanner可能会过头。如果您要继续操作并继续从流中读取整数,则最好使用原始流。但是,如果您接下来要读取一行文本,一个浮点值或其他内容,则Scanner可能就是您想要的。扫描仪具有处理换行符的技巧。您必须自己使用基本流来做到这一点。
答案 1 :(得分:0)
BufferedReader是
扫描仪是
请注意,使用正则表达式时Scanner速度很慢,这会使BufferedReader读取String的速度更快。