这两种从用户获取输入的方式之间有什么区别?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。
2 回答
慕虎7371278
TA贡献1802条经验 获得超4个赞
这只是两种完全不同的动物。从流中读取时,您正在读取简单的数量...字符、字节、行。然后,正如你所展示的,你必须添加额外的代码,以某种更高级别的方式解释这些数量。
根据扫描仪的文档:
一个简单的文本扫描程序,可以使用正则表达式解析基元类型和字符串。
因此,Scanner 在流之上添加了另一个级别的功能。它解析输入。它将传入的数据分开,并尝试以各种比字节或行更复杂的方式解释它。扫描仪为您提供了许多功能,如果您使用简单的流,则必须自己编写。
为了更尖锐地回答您的具体问题...两个建议的代码块是否都为您提供了所需的结果?如果是这样,并且如果您不打算继续从流中读取其他任何内容,那么使用Scanner可能有点过分了。如果您要继续从流中继续读取整数,也许使用原始流是最好的。但是,如果您接下来要读取一行文本,或浮点值或其他任何内容,那么Scanner可能是您想要的。扫描仪具有处理换行符的智能。您必须使用基本流自己执行此操作。
偶然的你
TA贡献1841条经验 获得超3个赞
BufferedReader 是
老
大 (8 KB)
已同步(使其变慢)
仅读取字符串。
当扫描仪是
新增功能
小缓冲区 (1 KB)
未同步
可以解析用户输入并读取整型、短整型、字节型、浮点型、长整型和双精度型字符串。
请注意,使用正则表达式时的扫描程序速度很慢,这使得BufferedReader读取字符串的速度更快。
添加回答
举报
0/150
提交
取消