【问题标题】:scanner neglecting white spaces in the beginning扫描仪一开始就忽略了空格
【发布时间】:2017-03-02 22:02:29
【问题描述】:

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

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

但问题是它没有在一开始就读取空白。

例子

Input            :    Hello   World

Output should be :    Hello   World

Output is        :Hello   World

请澄清错误并帮助我纠正。

【问题讨论】:

  • 使用 scan.nextLine();

标签: java java.util.scanner stdin stdio


【解决方案1】:

next() 方法用于让我们获取下一个单词(令牌),而不需要前面的分隔符。 Scanner 使用的默认分隔符是 一个或多个空格,因此它被设计忽略了。

如果您希望 s 保留包括分隔符在内的整行(或当前行的其余部分),请跳过 next() 并仅使用 nextLine()。

String s = scan.hasNextLine() ? scan.nextLine() : "";

但是要注意当我们混合next和nextLine时经常遇到的问题:Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo() methods中描述

【讨论】:

    【解决方案2】:

    读取扫描仪documentation

    scan.next() 将输入分解为基于空格的标记。

    扫描器使用分隔符模式将其输入分解为标记, 默认情况下匹配空格。

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多