【问题标题】:Hello, i have an problem with an with a keyboard input program你好,我的键盘输入程序有问题
【发布时间】:2022-06-17 06:13:30
【问题描述】:

当我输入名称时,它会给我一个有效数字或一个特殊字符。我想让它不考虑数字并且不返回,或者它可能会给出错误消息。

if (nome != null && !nome.isEmpty()) {
    System.out.println("Il nome inserito è:" + nome);
} else {
    System.out.println("Non è un nome valido");
}

while (!nome.contains("\[0-9\]+")) {
    continue;

【问题讨论】:

    标签: java


    【解决方案1】:

    String#contains() 检查纯文本;它不进行正则表达式匹配。

    要进行正则表达式匹配,请使用String#matches(),但请注意,它需要整个字符串才能匹配。

    最接近你的工作代码是:

    while (!nome.matches(".*\\d.*"))
    

    如果您只想允许拉丁字母和空格,请考虑使用:

    nome.matches("(?i)[a-z ]+") // (?i) means ignore case
    

    但是,您的消息表明您使用的是意大利语,所以这可能更有用:

    nome.matches("(?i)[a-il-vzàèéìòù ]+") // ignore case, jkwxy omitted, add accented vowels
    

    完整的代码如下所示:

    Scanner scanner = new Scanner(System.in);
    String nome = null;
    while (true) {
        System.out.println("Inserisci il nome:");
        nome = scanner.nextLine();
        if (!nome.matches("(?i)[a-il-vzàèéìòù ]+")) {
            System.out.println("Non è un nome valido");
            continue;
        }
    }
    System.out.println("Il nome inserito è: " + nome);
    

    【讨论】:

    • 请问,“String matches()”应该插入到哪里?
    • @Daniel 查看添加到答案的完整代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    相关资源
    最近更新 更多