0

所以我试图让我的程序遍历我的字符串中的每个字符,如果它找到一个数字,然后打印密码并退出 for 循环和 while 循环(不包括 while 循环,但它是'while(测试 == 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");
    }

}
4

3 回答 3

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

索引从0not开始1

所以循环应该是:

for (int num = 0; num < passw.length(); num++){
于 2012-12-17T05:16:28.547 回答
2
for (int num = 0; num <= passw.length(); num++){

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

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

希望有帮助!

于 2012-12-17T05:16:34.647 回答
2

你正在以错误的方式去做。用以下代码替换所有代码:

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

这使用 regex \D*,这意味着“每个字符都是非数字”

于 2012-12-17T05:18:47.097 回答