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.
谢谢。
我总是喜欢用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
如果问题解决了,请将此答案标记为“已接受”。 –
也许你需要在使用前.nextLine在流冲洗()或 你需要后的.next()使用额外.nextLine()之前,真正的.nextLine()
在做'nextLine'或'next'之前,'Scanner'上的最后一个操作是什么?大概是像'nextInt'那样的东西,并没有脱离换行符。 –
如果你[编辑]你的问题,添加你写的代码的简短版本([mcve]是最好的)和用户输入的输入,我们可能能够回答你的问题。 – RealSkeptic
1)我假设你在谈论'扫描仪' - 说吧。 2)使用a)段落和b)嵌入代码(反引号)格式化文本墙。 3)将您的实际代码发布到[MCVE](https://*.com/help/mcve)中以证明问题。 –