java - .hasNextInt 的替代方法?

标签 java java.util.scanner

我是java新手,我想知道是否有其他方法可以代替has.nextInt(),因为这个方法会弄乱我的扫描仪。例如

do {
    System.out.println("Please enter your full name: ");
    memberName = input.nextLine();
    if (input.hasNextInt()) {
        System.out.println("Your name cannot contain a number");
        input.next();
    } else {
        successful = true;
    }
} while (successful == false);

控制台

Create new member
Please enter your full name: 
jack 
jack

我必须输入我的名字两次才能继续 我知道存在这样的问题,但我没有找到任何解决方案。谢谢

编辑

我试图确保输入根本不包含任何数字,如果包含则

System.out.print("Your name cannot contain any numbers");

发生了

最佳答案

这里 if(input.hasNextInt()){ 的用法是错误的。因为您想在之前输入的字符串中查找数字,即 memberName

您可以使用正则表达式来实现此目的:

Pattern digitPattern = Pattern.compile("\\d+");       

然后您可以使用它来验证任何字符串:

System.out.println(digitPattern.matcher("Marcinek 234").matches());

关于java - .hasNextInt 的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34165170/

相关文章:

java - 为什么 myEnum.ONE 不等于 myEnum.ONE.toString()?

java - 扩展 Lucene 分析器

扫描仪的 Java 问题

java - 检查输入字符串是否具有特定模式

java - 方法不返回给用户(继承)

java - 在绘画上分层按钮

java - 有没有办法从 JFrame 返回特定元素?

Java Goose 不在 Android 上提取内容

java - 如何使用java中的扫描器扫描特定行?

java - 使用Java中的Scanner解析文本文件或控制台输入并遇到错误