2016-09-10 3 views
-3

Ich lerne Kontrollfluss und versuche Code zu schreiben, um 5 verschiedene Zahlen zu erfassen, dann in einem Array zu speichern, zu sortieren und zu drucken. Ich bekomme Ausnahme, sagen das Array ist außerhalb der Grenzen, aber ich kann nicht warum, seit im 5 Objekte in einem Array [4] speichern.Kontrollfluss C# (Out of Bounds Exception)

Irgendwelche Tipps, warum ich diese Ausnahme bekomme?

public static void Three() 
    { 
     var numbers = new int[4]; 
     var i = 0; 
     while (i <= 4) 
     { 
      Console.WriteLine("enter a number: "); 
      var input = Convert.ToInt32(Console.ReadLine()); 
      if (Array.IndexOf(numbers, input) != -1) 
      { 
       Console.WriteLine("try again"); 
      } 
      else 
      { 
       numbers[i] = input; 
       i++; 
      } 
     } 
     Array.Sort(numbers); 
     foreach (var item in numbers) 
     { 
      Console.WriteLine(Convert.ToString(item)); 
     } 
    } 
+0

"5 Objekte in ein [4] Array" - Sie können diesen Teil Ihrer Frage noch einmal lesen ... Als gute Praxis Suche nach Sprache + Ausnahme Name (zB https://www.bing.com/ Suche? q = C% 23% 20IndexOutOfRangeException in diesem Fall) ist gut ersten Schritt * vor * eine Frage zu stellen. –

Antwort

1

aber ich kann nicht sehen, warum, da im 5 Objekte in eine [4] Array speichern.

Da ein [4] Array halten 4 Objekte an den Indizes 0, 1, 2 und 3. Wenn Sie 5 Objekte halten möchten, benötigen Sie einen int[5] und verwenden die Indizes 0-4. Deshalb sehen Sie normalerweise i < 4 und nicht i <= 4 wie Sie haben.

+0

Danke. Ich war etwas verwirrt über 0-Index-Konzept und dachte, [4] hatte Recht deswegen. – niceguy335

Verwandte Themen