扫描仪一开始就忽略了白色空间



我正在使用扫描仪来获取字符串的输入。我的代码如下

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() : "";

但是要谨慎对待问题,当我们混合nextnextLine中所述的问题通常会面对:Scanner在使用Next(),NextInt()或其他NextFoo()方法之后跳过NextLine()方法

阅读扫描仪文档

scan.next()根据空白将输入分解为令牌。

使用定界符模式,扫描仪将其输入打破了令牌, 默认情况下匹配Whitespace。

尝试以下操作:

String s="";
        if(scan.hasNext()){
        s +=scan.nextLine();
    }

最新更新