stringName.next()接受用户的输入,但stringName.nextLine()不接受。有什么不同? (Java)

问题描述:

编写我的程序时遇到了一个有趣的情况。
stringName.next()接受用户的输入,但stringName.nextLine()不接受。有什么不同? (Java)

我需要接受用户的一个词来决定继续循环。使用.nextLine()不允许用户输入输入并且程序被中止,但.next()运行得很好。

我认为,不同的是,.next()接受输入直到字符串中第一个空间,而.nextLine()接受整个字符串。

如果两者都应该接受用户的输入,为什么它很重要..这还有更多吗?

.next() works perfectly fine for my program, but I'm curious for the future in case it happens again. 

谢谢。

+0

在做'nextLine'或'next'之前,'Scanner'上的最后一个操作是什么?大概是像'nextInt'那样的东西,并没有脱离换行符。 –

+2

如果你[编辑]你的问题,添加你写的代码的简短版本([mcve]是最好的)和用户输入的输入,我们可能能够回答你的问题。 – RealSkeptic

+0

1)我假设你在谈论'扫描仪' - 说吧。 2)使用a)段落和b)嵌入代码(反引号)格式化文本墙。 3)将您的实际代码发布到[MCVE](https://*.com/help/mcve)中以证明问题。 –

我总是喜欢用nextLine()来读取输入,然后解析字符串。

使用next()只会返回空格前的内容。返回当前行后,nextLine()自动移动扫描仪。

解析来自nextLine()的数据的有用工具是str.split("\\s+")

String data = scanner.nextLine(); 
String[] pieces = data.split("\\s+"); 
// Parse the pieces 

有关Scanner类或String类的更多信息,请参阅以下链接。

扫描仪: - http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

字符串: - http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

+0

如果问题解决了,请将此答案标记为“已接受”。 –

也许你需要在使用前.nextLine在流冲洗()或 你需要后的.next()使用额外.nextLine()之前,真正的.nextLine()