如何在嵌套的for循环中使用while循环

时间:2019-04-09 21:57:55

标签: c++ for-loop while-loop continue

我试图在满足if语句的条件后继续while循环,但是,如果if语句在for循环中,而continue语句只是继续for循环而不是while循环。我的代码如下:

while (valid_input == false) {

    printf("Enter a date (yyyy/mm/dd): ");
    fflush(stdout);
    fgets(date, 20, stdin);

    for (int i = 0; i <= 3; i++) {

        if (!isdigit(date[i])) {
            printf("Error: You didn't enter a date in the format (yyyy/mm/dd)\n");
            continue;
        }

    }

我该如何编码,以便在满足条件(!isdigit(date [i]))之后在while循环的开头继续?

2 个答案:

答案 0 :(得分:1)

您可以简单地使用另一个布尔变量来表示要continue外循环和break执行内循环:

while (valid_input == false) {

    printf("Enter a date (yyyy/mm/dd): ");
    fflush(stdout);
    fgets(date, 20, stdin);

    bool continue_while = false; // <<<
    for (int i = 0; i <= 3; i++) {

        if (!isdigit(date[i])) {
            printf("Error: You didn't enter a date in the format (yyyy/mm/dd)\n");
            continue_while = true; // <<<
            break; // <<< Stop the for loop
        }
    }
    if(continue_while) {
        continue; // continue the while loop and skip the following code
    }

    // Some more code in the while loop that should be skipped ...
}

如果没有更多的代码需要在之后跳过,也许break;循环中的for()就足够了。

答案 1 :(得分:-1)

使用continue是不可能的,您需要使用goto或条件语句。很难,在您的特定情况下,break会达到相同的结果。

顺便说一句。我不是在这里决定处理日期验证的设计决定。只需回答如何进行下一次while迭代即可。