können sagen, bei i = 5, ich die Schleife wiederholt werden soll, bis die Bedingung (x)
Für mich erfüllt, das klingt wie Sie möchte, dass die Schleife die gleiche Logik ausführt, bis x
erfüllt ist. Wenn Sie beispielsweise in jeder Iteration der Schleife den Wert i
drucken, sollten Sie fortfahren, 5
zu drucken, bis x
erfüllt ist.
Statt also eine for
Schleife zu verwenden, würde ich vorschlagen, stattdessen eine while
Schleife:
int length = 20;
int i = 0;
while (i < length)
{
Print(i); // This is just an example.
if (i == 5 && !condition(x))
{
x++; // Do something with x. Again, an example.
continue;
}
i++;
}
Die continue
Anweisung bewegt die Schleife zu seiner nächsten Iteration, was bedeutet, die i++
Aussage nicht sein ausgeführt, bis die Bedingung mit x
erfüllt ist.
Möchten Sie meinem Beispiel über das Drucken den Wert von i
, sagen wir, Sie die Zahlen 1
-10
drucken wollte, aber Sie wollten die 5
3 mal drucken. Könnte man so tun, wie folgt:
int length = 10;
int i = 1;
int x = 1;
while (i <= length)
{
Console.WriteLine(i);
if (i == 5 && x < 3)
{
x++;
continue;
}
i++;
}
Welche Ausgänge:
1
2
3
4
5
5
5
6
7
8
9
10
Sie sollten erklären, was Sie zu tun versuchen. Wenn ich Sie richtig verstehe und Sie die gleiche Top-Level-Schleife machen wollen, bis eine Bedingung erfüllt ist, würde ich einfach den Zähler zurücksetzen. z.B. 'if (i == 5 &&! Bedingung) {i = 4;}'. Der Schleifenzähler erhöht diesen Wert dann wieder auf 5. –
also meinst du ich kann den Zähler auf i = 4 setzen. OK, ich werde das versuchen. –
Was Sie tun, ist eine blockierende Operation, was bedeutet, dass stattdessen, wenn Sie den Schleifenzähler ändern, Sie in einer internen while-Schleife sitzen können, bis die Bedingungen erfüllt sind. – Snympi