我在谈论效率。我需要从控制台输入中读取一个int。我确信输入是每行上一个int的形式,没有其他值。
我定义了一个Scanner对象:
Scanner scan = new Scanner(System.in);
我可以这样做:
int a = scan.nextInt();
或
int a = Integer.parseInt(scan.nextLine());
哪种方式更好?
答案 0 :(得分:0)
我的假设是第二个输入将使用整个输入线而不是第一个输入线可能会留下一些垃圾,这可能会影响用户未来的输入。通常,在请求来自用户的更多输入之前清除输入行是一个好习惯。第一种方法不这样做,因此你需要另一个命令来做到这一点。
答案 1 :(得分:0)
根据Scanner.nextInt()
将令牌转换为int值,就好像通过删除所有特定于语言环境的前缀,组分隔符和特定于语言环境的后缀,然后通过Character.digit将非ASCII数字映射到ASCII数字,前面加一个负号( - )if存在特定于语言环境的负前缀和后缀,并将结果字符串传递给具有指定基数的Integer.parseInt。
无论如何都要调用Integer.parseInt()
。如果您知道每行已经准备好立即调用parseInt
,那么放弃所有这些初始检查并直接Integer.parseInt(scan.nextLine());
就可以了。