这两种从用户获取输入的方式之间有什么区别?

这两种从用户获取输入的方式之间有什么区别?


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。


慕雪6442864
浏览 113回答 2
2回答

慕虎7371278

这只是两种完全不同的动物。从流中读取时,您正在读取简单的数量...字符、字节、行。然后,正如你所展示的,你必须添加额外的代码,以某种更高级别的方式解释这些数量。根据扫描仪的文档:一个简单的文本扫描程序,可以使用正则表达式解析基元类型和字符串。因此,Scanner 在流之上添加了另一个级别的功能。它解析输入。它将传入的数据分开,并尝试以各种比字节或行更复杂的方式解释它。扫描仪为您提供了许多功能,如果您使用简单的流,则必须自己编写。为了更尖锐地回答您的具体问题...两个建议的代码块是否都为您提供了所需的结果?如果是这样,并且如果您不打算继续从流中读取其他任何内容,那么使用Scanner可能有点过分了。如果您要继续从流中继续读取整数,也许使用原始流是最好的。但是,如果您接下来要读取一行文本,或浮点值或其他任何内容,那么Scanner可能是您想要的。扫描仪具有处理换行符的智能。您必须使用基本流自己执行此操作。

偶然的你

BufferedReader 是老大 (8 KB)已同步(使其变慢)仅读取字符串。当扫描仪是新增功能小缓冲区 (1 KB)未同步可以解析用户输入并读取整型、短整型、字节型、浮点型、长整型和双精度型字符串。请注意,使用正则表达式时的扫描程序速度很慢,这使得BufferedReader读取字符串的速度更快。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java