2017-05-07 4 views
0

Lassen Sie uns das folgende Beispiel an:Wie wiederhole ich eine For-Schleife-Iteration C#?

int Lenght = 10; 
for(int i = 0; i < Length; i ++) 
{ 
    if(i == 5) 
    { 

    } 
} 

Sagen wir bei i = 5, ich die Schleife wiederholt werden soll, bis die Bedingung (x) erfüllt ist, bevor Sie zu anderen Iterationen fortgesetzt. Wie behalte ich die if-Anweisung, bis die Bedingung (x) verfügbar ist?

+1

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. –

+0

also meinst du ich kann den Zähler auf i = 4 setzen. OK, ich werde das versuchen. –

+0

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

Antwort

4

Sie könnten Folgendes tun, obwohl es nicht wirklich eine gute Idee ist. Was versuchst du zu machen?

for (var i = 0; i < 10; i++) 
{ 
    if (i == 5) 
    { 
     while (!condition(x)) { } 
    } 
} 
+0

Danke @InBetween, aber ich habe mich gefragt, ob es möglich ist, den Zähler auf i = 5 zu setzen, und es an diesem Punkt zu belassen, bis ich mit anderen Sachen fertig bin, und dann lasse ich wie gewohnt erhöhen? –

0
int Lenght = 10; 
for(int i = 0; i < Length; i ++) 
{ 
    // this loop iterate through all values 
    // lets say at i = 5, I want the loop to repeat until conition (x) is met 
    // before continuing to other iterations 
    if(i == 5) 
    { // For example sake assuming x is an int and 10 is your exit val 
     // Post more code for a better answer 
     while (x != 10) 
     { 
      x++; 
     } 
} 

}

0

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 
Verwandte Themen