[英]What's the difference between these two ways of creating a DateTime from a LocalDateTime?
[英]What is the difference between these two ways of taking input from user?
这两种从用户那里获取输入的方式有什么区别?
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被相应地导入。
这些只是两只完全不同的动物。 从流中读取时,您正在读取简单的数量...字符,字节,行。 然后,如您所示,您必须添加其他代码以更高级别的方式解释这些数量。
根据扫描仪的文档:
一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。
因此,Scanner在流之上添加了另一级功能。 填充输入。 它将输入的数据分开,并尝试以各种方式解释它,而不仅仅是字节或行。 如果使用简单的流,扫描程序将为您提供很多功能,您必须编写自己的代码。
为了更明确地回答您的特定问题...两个建议的代码块都给您所需的结果吗? 如果是这样,并且如果您不打算继续从流中读取任何其他内容,那么使用Scanner可能会过头。 如果您要继续操作并继续从流中读取整数,则最好使用原始流。 但是,如果您接下来要读取一行文本,一个浮点值或其他内容,则Scanner可能就是您想要的。 扫描仪具有处理换行符的技巧。 您必须自己使用基本流来做到这一点。
BufferedReader是
扫描仪处于
请注意,使用正则表达式时Scanner速度较慢,这会使BufferedReader读取String的速度更快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.