Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查字符串是否有数字_Java - Fatal编程技术网

Java 检查字符串是否有数字

Java 检查字符串是否有数字,java,Java,如何检查密码是否包含数字?我必须使用isDigit()方法 我知道如何用charAt()只检查一个字符,而不检查整个单词 public class CheckingPasscodes { public static void main (String [] args) { boolean hasDigit = false; String passCode = ""; int valid = 0; passCode = "abc";

如何检查密码是否包含数字?我必须使用isDigit()方法
我知道如何用charAt()只检查一个字符,而不检查整个单词

public class CheckingPasscodes {
    public static void main (String [] args) {
       boolean hasDigit = false;
       String passCode = "";
       int valid = 0;

       passCode = "abc";

       // if (?)
       hasDigit = true;

       if (hasDigit) {
          System.out.println("Has a digit.");
       } else {
          System.out.println("Has no digit.");
       }
       return;
    }
}

for(int i=0;i
for(int i=0;i使用循环检查密码中的每个字符

hasDigit = false;
    for (int i = 0; i < passCode.length(); ++i) {
        if (Character.isDigit(passCode.charAt(i))) {
            hasDigit = true;
            break;
        }
    }
hasDigit=false;
对于(int i=0;i
使用循环检查密码中的每个字符

hasDigit = false;
    for (int i = 0; i < passCode.length(); ++i) {
        if (Character.isDigit(passCode.charAt(i))) {
            hasDigit = true;
            break;
        }
    }
hasDigit=false;
对于(int i=0;i
使用正则表达式可以帮助您:

hasDigit = passCode.matches(".*\\d+.*");

使用regex可以帮助您:

hasDigit = passCode.matches(".*\\d+.*");

如果String类有一个“hasDigit”方法,那就行了。@marks我修复了它:-)不,这两种方法都不起作用,因为它会抛出一个
IndexOutOfBoundsException
,即使这不是问题,也没有大括号。而且
char
是一个基本类型,它没有任何方法。即使这样,它也只会一遍遍地分配
a
,然后测试最后一个,它不算为working、 这就是为什么您总是使用大括号。如果String类有一个“hasDigit”方法,这会起作用。@marks我修复了它:-)不,这两种方法都不起作用,因为它会抛出一个
索引AutofBoundsException
,即使这不是问题,也没有大括号。另外,
char
是一种基本类型,它没有方法。即使这样,它也只会一遍又一遍地分配
一个
,然后测试最后一个,这不算工作。这就是为什么你总是使用大括号。迂腐点:如果字符串也包含任何数字,这将无法检测数字,因为默认情况下
与它们不匹配。如果需要,可以将
替换为
[\S\S]
。也就是说,
hasDigit=passCode.matches(“[\\S\\S]*\\d+[\\S\\S]*”)。或者更简洁地说,直接使用
Pattern
类绕过
String.matches
始终尝试匹配整个字符串的限制:
hasDigit=java.util.Pattern.compile(\\d”).matcher(passCode.find()迂回点:如果字符串也包含任何数字,则无法检测数字,因为默认情况下
与它们不匹配。如果需要,可以将
替换为
[\S\S]
。也就是说,
hasDigit=passCode.matches(“[\\S\\S]*\\d+[\\S\\S]*”)。或者更简洁地说,直接使用
Pattern
类绕过
String.matches
始终尝试匹配整个字符串的限制:
hasDigit=java.util.Pattern.compile(\\d”).matcher(passCode.find()