0

我说的是效率。我需要从控制台输入中读取一个 int 。我确定输入是每行一个 int 的形式,没有其他值。

我定义了一个 Scanner 对象:

Scanner scan = new Scanner(System.in);

我可以这样做:

int a = scan.nextInt();

或者

int a = Integer.parseInt(scan.nextLine());

哪种方式更好?

4

2 回答 2

0

根据文档Scanner.nextInt()

令牌被转换为 int 值,就像通过删除所有语言环境特定的前缀、组分隔符和语言环境特定的后缀,然后通过 Character.digit 将非 ASCII 数字映射为 ASCII 数字,如果语言环境特定,则在前面加上一个负号 (-)存在负前缀和后缀,并将结果字符串传递给具有指定基数的 Integer.parseInt。

反正就是这么Integer.parseInt()叫的。如果您知道每一行都已经准备好parseInt立即调用,那么放弃所有这些初始检查并直接执行是有意义的Integer.parseInt(scan.nextLine());

于 2015-03-23T19:35:29.617 回答
0

我的假设是第二个将使用整行输入,而不是第一个可能会留下一些垃圾,这可能会影响用户未来的输入。一般来说,在向用户请求更多输入之前清除输入行是一种很好的做法。第一种方法不这样做,因此您将需要另一个命令来执行此操作。

于 2015-03-23T19:25:59.580 回答