使用扫描仪,您可以使用input.nextInt()
代替int
或input.nextDouble()
代替double
。Java扫描仪输入字符串
为什么使用input.nextLine()
代替String
而不是input.nextString()
?
使用扫描仪,您可以使用input.nextInt()
代替int
或input.nextDouble()
代替double
。Java扫描仪输入字符串
为什么使用input.nextLine()
代替String
而不是input.nextString()
?
的最接近nextString()
是next()
,它返回下一令牌,在默认情况下是下一个“字”(这是通过设置分隔符控制,即默认为空白)。
nextLine()
返回当前行(其余部分)(最多但不包括新行char),,而不管分隔符。这就是为什么它被称为线不字符串,因为“线”最准确地描述它做什么,而不是什么类型,它返回它不会从next()
啊我现在明白了,谢谢! –
扫描仪类接受输入并尝试将其转换为提及的数据类型。 如果您已经编写nextDouble
,那么它会尝试将数据转换为Double数据类型。如果转换失败,则会引发错误。
在nextLine的情况下,它会占用完整的下一行并将其转换为字符串,因为字符串可以是n个字符。 this is a test message
是一个字符串值。
字符串数据可以包含空格,而任何其他数据类型不会。
对于nextLine(),扫描器将匹配LINE_PATTERN = ".*(\r\n|[\n\r
])|.+$"
正则表达式的字符串。
对于nextDouble()或其他任何传递无效输入的方法,它将抛出java.util.InputMismatchException
类型的异常。
谢谢我认为我现在明白了,但是如果line是一个数据类型,为什么它可以用作输入行中的String之后的值?另外,为什么不说线而不是线,因为它会是一个字符串? –
我想,因为一个字符串可以保持新行分隔符太 – Thrasher
所以一行是在一个字符串?而int或double等其他内部没有其他内容,所以这就是为什么你只是使用Int,Double等? –
命名约定使程序易于阅读,使程序更容易理解。他们还可以提供有关 标识符功能的信息,例如,它是常量,包或类,这有助于理解代码。
此方法返回的当前行的其余部分,不包括在端任何在线分离器。该位置设置为下一行的开头。所以:
为什么你会把它称为nextString()如果这个方法返回一行?
谢谢,所以它返回的不是一个字符串? –
区分自己在其他的答案加起来,所有的本地类型已经固定大小以字节(即byte
是1,char
和short
是2,和long
是double
8,...),所以很容易对Scanner
读取只是字节的量,并返回相应的结果。
现在,有多少个字节是String
?如果是C,那么它将是“,直到找到一个空字符”,但是在Java字符串中的空字符是合法的,因此您无法知道在哪里停止阅读。这就是为什么没有nextString()
方法。
相反,您可以任意决定在特定字符处结束字符串,并且该字符最终成为换行\r\n
组合。该方法的正确名称是nextLine()
。
因为整行是一个字符串?然后你可以把它称为一条线... – Li357
我认为你可能会感到困惑,因为它占用了整行(包括空格),最后不包括任何行分隔符。 – Thrasher
是的,我很困惑哈哈,刚开始尝试学习java。我只询问整行String line = input.nextLine()中的具体(Line)。 –