我正在使用扫描仪来获取字符串的输入。我的代码如下
String s=scan.next();
if(scan.hasNext()){
s +=scan.nextLine();
}
但问题是它一开始就没有阅读白色空间。
示例
Input : Hello World
Output should be : Hello World
Output is :Hello World
请澄清什么是错误并帮助我纠正。
next()
方法用于让我们在不之前的定界符之前获取下一个单词(token)。扫描仪使用的默认定界符是一个或多个Whitespace ,因此被设计忽略了。
如果您希望s
保留整个行(或当前行的其余线),则跳过next()
并仅使用nextLine()
。
String s = scan.hasNextLine() ? scan.nextLine() : "";
但是要谨慎对待问题,当我们混合next
和nextLine
中所述的问题通常会面对:Scanner在使用Next(),NextInt()或其他NextFoo()方法之后跳过NextLine()方法
阅读扫描仪文档
scan.next()
根据空白将输入分解为令牌。
使用定界符模式,扫描仪将其输入打破了令牌, 默认情况下匹配Whitespace。
尝试以下操作:
String s="";
if(scan.hasNext()){
s +=scan.nextLine();
}