循环不停顿休息?

时间:2015-11-03 01:16:07

标签: java

我写了一个名称检查器,它使用for循环来检查字符串中的每个字符是否都是一个字母,我在for循环中写了一条if语句,声明如果满足if语句条件,打印&#34 ;你的名字有效!"并打破。但如果条件不满足,请重新运行循环。

public static void nameValid() {
    Scanner in = new Scanner(System.in);
    System.out.println("Enter your name");
    String name = in.nextLine();
    int q = name.length();

    for (int i = 0; i < name.length(); i++) {
        if (Character.isLetter(name.charAt(i)) && q >= 2) {
            System.out.println("Your name is valid!");
            break;
        } else {
            System.out.println("Your name is invalid! Please enter a valid name!");
            nameValid();
        }
    }
}

如果我第一次输入有效字符串,一切都很好,然后转到第二种方法。如果我输入一个无效的字符串,它会给我预期的错误消息并重新运行循环。但是当我在那之后输入一个有效的字符串时,它会不断地运行循环。我得到的输出是:

Enter your name
123
Your name is invalid! Please enter a valid name!
Enter your name
fred
Your name is valid!
Your name is invalid! Please enter a valid name!
Enter your name

2 个答案:

答案 0 :(得分:4)

它没有重新运行循环...它正在进入一个递归函数调用。

(请在下次使用调试器。)

答案 1 :(得分:1)

else块中,您在循环内递归调用nameValid函数。因此,当您最终输入有效名称并点击break行时,最初调用该函数的循环将继续。