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