字符串长度问题

时间:2012-12-17 05:15:23

标签: java string

所以我试图让我的程序遍历我的字符串中的每个字符,如果找到一个数字,那么打印密码并退出for循环和while循环(不包括while循环,但它是'while(test == 0)')。但是如果我输入没有数字的密码,它将扫描整个字符串并打印我需要的数字。出于某种原因,当我输入带有数字的密码时,它完美地运行。但是当我输入没有数字的密码时,我收到一条错误消息......有什么想法吗?

这是我的代码:

for (int num = 0; num <= passw.length(); num++){
    if (Character.isDigit(passw.charAt(num))){
        num += 1000;
        test++;
        System.out.println(passw);
    }

    if (num >= passw.length() && num <= 1000){
        System.out.println("You need a number");
    }

}

3 个答案:

答案 0 :(得分:2)

for (int num = 0; num <= passw.length(); num++){

索引从0而非1

开始

所以循环应该是:

for (int num = 0; num < passw.length(); num++){

答案 1 :(得分:2)

for (int num = 0; num <= passw.length(); num++){

将转到字符串末尾的字符。只是做

for (int num = 0; num < passw.length(); num++){

希望有所帮助!

答案 2 :(得分:2)

你正在走错路。用这个代替所有代码:

if (passw.matches("\\D*")) {
    System.out.println("You need a number");
}

这使用正则表达式\D*,这意味着“每个字符都是非数字的”