2012-04-15 5 views
0

Ich habe eine if-Anweisung innerhalb einer Schleife, mit Debug.Write() Ich habe festgestellt, dass für die erste Iteration der Schleife alles wie erwartet funktioniert, aber bei nachfolgenden Iterationen der If-Block ignoriert wird, aber alles sonst wird innerhalb der Schleife noch ausgeführt. Ich habe ein paar Varianten ausprobiert, aber bisher hat keiner von ihnen funktioniert.C# Schleifen nicht Schleife eine If-Anweisung

Ursprünglich hatte ich:

Private int Loop() 
{ 
    int a = 50000; 
    int n = 0; 
    for (int n = 0; n < arrayListFromElsewhere.Count(); n++) 
    { 
     if ((int)arrayListFromElsewhere[n] < a) 
     { 
      Debug.WriteLine("if loop: " + n); 
      a = n; 
     } 
     Debug.WriteLine("N: " + n); 
    } 
} 

Welche drucken würde:

if loop: 0 
N: 0 
N: 1 
N: 2 
etc... 

ich, dass die Arraylist immer nur ganze Zahlen enthält bestätigt haben, ersetzt die für eine Weile und versuchte, bewegt die, wenn sie in eine separate Funktion, die innerhalb der for/while aufgerufen wird, aber nichts hat bisher funktioniert. Was für eine offensichtliche Sache habe ich übersehen?

+1

Ihr Beispiel wird nicht wie bereitgestellt kompiliert; Sie definieren die Variable "n" zweimal. –

+0

Wenn Sie in der zweiten Iteration den Block 'if' nicht eingeben, liegt das wahrscheinlich daran, dass die Bedingung '(int) arrayListFromElsewhere [n] ThomasWeiss

Antwort

8

Nach der ersten Iteration der Schleife haben Sie a auf n festgelegt. Von nun an gehen Sie nur noch in die if-Anweisung, wenn der Wert in ArrayList negativ ist. Sind einer der Werte negativ? (Ein kurzes, aber vollständiges Beispiel des Fehlers hätte übrigens neben der Erklärung, was Sie gerade tun, wirklich geholfen.)

(Abgesehen davon, warum verwenden Sie immer noch nicht - generische Sammlungen? 2004 ruft - es will seinen Code zurück!)

2

das erste Mal, obwohl die Schleife a = n während n ist Null, so wenn das if das zweite Mal ausgewertet wird n = 1 a = 0 arrayListFromElsewhere [n ] = etwas> 0

1

In Ihrer ersten Iteration a wird 0 (der Wert von n bei Ihrem ersten Lauf).

Danach ist die if-Anweisung if ((int)arrayListFromElsewhere[n] < a) immer falsch.

0

Ja, die if block wird basierend auf der von Ihnen angegebenen Bedingung ignoriert. Seit dem ersten if-Block haben Sie a = n eingestellt. in diesem Fall a will be 0. Folgender if-Block ist also falsch und wird nicht ausgeführt.

0

Wenn Sie nur positive Zahlen im Array haben, wird a nach der ersten Iteration 0 sein (das erste n im if ist 0) und es wird nicht mehr in das if-Feld eingegeben.

Außerdem haben Sie zweimal deklariert.

Verwandte Themen