java – Integer.parseInt(scanner.nextLine())vs scanner.nextInt()
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Integer.parseInt(scanner.nextLine())vs scanner.nextInt(),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2207字,纯文字阅读大概需要4分钟。
内容图文
我的教授倾向于做以下事情来从用户那里得到一个数字:
Scanner scanner = new Scanner(System.in);
Integer.parseInt(scanner.nextLine());
与简单地执行scanner.nextInt()相比有什么好处?
java.util.Scanner.java中包含以下内容:
public int nextInt() {
return nextInt(defaultRadix);
}
public int nextInt(int radix) {
// Check cached result
if ((typeCache != null) && (typeCache instanceof Integer)
&& this.radix == radix) {
int val = ((Integer)typeCache).intValue();
useTypeCache();
return val;
}
setRadix(radix);
clearCaches();
// Search for next int
try {
String s = next(integerPattern());
if (matcher.group(SIMPLE_GROUP_INDEX) == null)
s = processIntegerToken(s);
return Integer.parseInt(s, radix);
} catch (NumberFormatException nfe) {
position = matcher.start(); // don't skip bad token
throw new InputMismatchException(nfe.getMessage());
}
}
正如我所看到的,Scanner在其他hocus pocus之上调用Integer.parseInt()本身.只做Integer.parseInt(scanner.nextLine())会有显着的性能提升吗?另一方面有任何缺点吗?
扫描包含大量数据而不是用户输入的文件时怎么样?
解决方法:
有2个观察结果:
>使用myScannerInstance.nextInt()会留下一个换行符,因此,如果在nextInt()之后调用nextLine(),则nextLine()将读取换行符而不是实际数据.因此,您必须在nextInt()之后添加另一个nextLine()来吞噬那个悬空的换行符. nextLine()不会留下新的行字符.
代码:
int age=myScannerInstance.nextInt();
String name = myScannerInstance.nextLine();// here the actual name will not be read. The new line character will be read.
> nextInt()将再次返回底层流并读取. IO调用需要时间(昂贵).它将进行大量检查以获得下一个整数. nextLine()只执行一次这样的检查..所以,如果你调用nextLine()一次并读取5个整数(作为单行String),拆分它们并将它们解析为整数(使用Integer.parseInt()),它将比单独读取每个int更快更有效.
使用nextLine()时,parseInt()将在运行非常大的循环时为您提供巨大的性能优势.
用法:
使用nextInt()为您提供了额外的优势,如果输入文本不是整数,您将获得异常.示例123被接受.. 123sdsa将抛出InputMismatchException.所以,你可以抓住它并适当地处理它.
使用nextLine()将读取整行,因此,它将读取整个String sada1231,如果它无法将String解析为数字,则会失败并返回NumberFormatException.您将不得不处理该异常.
通常,一个nextLine()/ nextInt()调用不会产生太大的影响.如果你有一个循环或者你正在阅读大量数据,那么使用带有parseInt()的readLine()将非常有效.
内容总结
以上是互联网集市为您收集整理的java – Integer.parseInt(scanner.nextLine())vs scanner.nextInt()全部内容,希望文章能够帮你解决java – Integer.parseInt(scanner.nextLine())vs scanner.nextInt()所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。