2012-07-18 35 views
4

我正在阅读Java的API,因为我对.nextLine().nextDouble()之间的区别有疑问。在API中,它说,这对.nextLine()Java:.nextLine()和.nextDouble()的区别

“此扫描器执行当前行,并返回跳过的输入此方法返回当前行的其余部分,不包括结尾处的行分隔符。该位置设置为下一行的开头。“

足够简单...它跳过当前行,然后返回刚才跳过的行。但对于.nextDouble(),就这样说:。

“扫描输入的下一个标记为双此方法将抛出InputMismatchException,如果下一个标记不能转换为有效的double值,如果转换成功,扫描仪前进通过匹配的输入。“

那么这是否意味着.nextDouble()不会跳到一个新行,并且它只读取直到double的结尾,然后停在行尾?这将有助于我理解现在正在处理的计划。感谢家伙和女孩!

+0

是的,如果你知道下一行是在双行之后的下一行,你将需要自己调用nexLine。 – 2012-07-18 23:46:34

+0

假设你的扫描仪被命名为'scanner',如果你想读取一个double,并且它是唯一可以做的事情,就像'Double.parseDouble(scanner.nextLine());' – 2012-07-19 00:15:23

回答

1
nextDouble() 

只读取从输入流构成该双键和不前进到下一行的下一个4个字节,而nextLine()一样。另外我认为你需要明白一个新行由字符串'\ n'指定,显然一个数字不会包含换行符,所以'nextDouble()'不会'前进'到下一行。

编辑:勒兹是右

+0

啊哈!非常感谢,这让我对事情变得更加清楚。 Stackoverflow.com是由很多聪明的人组成......我觉得在这里不重要。再次感谢! – 2012-07-18 23:47:25

+6

它不'读取下一个4字节......组成双'。它*扫描下一个*标记*并将其解析为双精度值。 – EJP 2012-07-18 23:49:54

+0

我之前编辑了我的答案,并提到razvan是对的 – tommo 2012-07-19 00:11:11

3

它读取的下一个标记(2之间的分离的字符,白色字符通常),而不是在接下来的4个字节。然后,如果可以,它会将该令牌转换为双倍。

Ex: Bla bla bla 12231231.2121 bla bla. 

可以使用nextDouble()读取第4个标记。它读取13个字符,并在可能的情况下将该字符串转换为双精度字符串。