猿问

Java - 扫描器不读取带空格的字符串(已解决)

我正在尝试允许仅使用字符 a-zA-Z 并且还具有空格的输入。示例:“查克诺里斯”。 下面的代码发生的情况是扫描器input.next()不允许上述示例输入字符串。


我期待这个输出:Success!但这是实际输出:Again: 


try {

    String input_nome = input.next();            // Source of the problem


    if (input_nome.matches("[a-zA-Z ]+")) {

        System.out.print("Success!");

        break;

    } else {

        System.err.print("Again: ");

    }

} catch (Exception e) {

    e.printStackTrace();

}

解决方案

问题的根源是使用的扫描仪方法。


String input_nome = input.next();            // Incorrect scanner method

String input_nome = input.nextLine();        // Correct scanner method

说明: https://stackoverflow.com/a/22458766/11860800


DIEA
浏览 168回答 2
2回答

泛舟湖上清波郎朗

String t = "Chuck Norris";t.matches("[a-zA-Z ]+")实际上是否返回 true。检查您的输入是否确实是“Chuck Norris”,并确保空格不是一些奇怪的字符。您也可以使用 \s 而不是空格。我还推荐 101regex.com

侃侃尔雅

你可以使用下面的正则表达式String regx = "^[\\p{L} .'-]+$";这应该适用于所有场景和 unicode。
随时随地看视频慕课网APP

相关分类

Java
我要回答