2016-05-05 26 views
0

Ich bekomme den Fehler "Index war außerhalb der Grenzen des Arrays". Dieser Code, den ich aus meinem Lehrbuch eingegeben habe. Kann nicht scheinen, irgendetwas mit ihm falsch zu finden.C# außerhalb der Grenzen des Arrays

class Program 
{ 
    static void Main() 
    { 
     int[] scores = new int[8]; 
     int x; 
     string inputString; 

     for (x = 0; x < scores.Length; ++x) 
     { 
      Write("Enter your score on test {0} ", x + 1); 
      inputString = ReadLine(); 
      scores[x] = Convert.ToInt32(inputString); 
     } 

     WriteLine("\n----------------------------"); 
     WriteLine("Scores in original order: "); 
     for(x = 0; x < scores.Length; ++x) 
      Write("{0, 6}", scores[x]); 

     WriteLine("\n----------------------------"); 
     Array.Sort(scores); 
     WriteLine("Scores in sorted order: "); 
     for(x = 0; x < scores.Length; ++x) 
      Write("{0, 6}", scores[x]); 

     WriteLine("\n----------------------------"); 
     Array.Reverse(scores); 
     WriteLine("Scores in reverse order: "); 
     for(x = 0; x < scores.Length; ++x) ; 
      Write("{0, 6}", scores[x]); 
    } 
} 
} 
+0

In einem Debugger zeilenweise vorgehen. Wenn Sie noch nicht wissen, wie Sie einen Debugger verwenden, lesen Sie weiter. Dieses Tool spart Ihnen unzählige Stunden verschwendeter Zeit und hilft Ihnen, den Programmablauf besser zu verstehen. –

+1

versuche 'x ++' anstelle von '++ x' – Phaeze

+0

@Phaeze wie würde das überhaupt aus bedeuten? Für einen Ausdruck, der nur eine einzige Variable darstellt, spielt das Präfix vs. Postfix keine Rolle. – Adrian

Antwort

5

Sie haben ein zusätzliches Semikolon

for (x = 0; x < scores.Length; ++x) ; 
Console.Write("{0, 6}", scores[x]); 

Die for Schleife läuft, nichts zu tun, außer Schritt x auf den Endwert von 8 Dann wird die nächste Zeile läuft mit x noch bevor der Wert von ist, was zufällig ist 8.

Um es zu beheben, entfernen Sie die zusätzlichen ;.

+0

Gute Augen ;-) oder schnelles Kompilieren: D – BWA

+1

Aus persönlichen Gründen benutze ich {} auch für 1-zeilige Schleifenkörper. Mein Auge wurde dadurch auf diese Linie gezogen. –

+1

Oder formatieren Sie einfach Ihren Code. Voilà - schau, was keinen Eindruck hat –

Verwandte Themen