Laden...

Wieso bekomme ich eine Index Exception beim Zugriff auf ein mehrdimanesionales Array?

Erstellt von Shayliar vor 3 Jahren Letzter Beitrag vor 3 Jahren 842 Views
S
Shayliar Themenstarter:in
20 Beiträge seit 2019
vor 3 Jahren
Wieso bekomme ich eine Index Exception beim Zugriff auf ein mehrdimanesionales Array?

Hallo,
entschuldigt, hoffe ich bin nicht falsch hier.
ich hab folgenden Code:


using System;

namespace RechtEckArray
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Mehrdimensionales Array als (Rechteck-Array)");
            int[,] IntArray = new int[3, 10];
            int k = 0;
            for (int i = 0; i < 3; i++)
            {

               for (int j = 0; j < IntArray.Length; j++)
                {
                    IntArray[i, j] = k +j; 

                    Console.WriteLine($"Inhalt von Array: {IntArray[i,j]}");
                   
                }
               
                /* Console.WriteLine($"{k}"); */
                k += 10;

            }
            Console.ReadLine();
        }


    }
}

nun wenn ich das so schreibe, gibt mir Visual Studio immer einen Fehler an.
Außerhalb der Array-Range.

Wenn ich statt:


 for (int j = 0; j < IntArray.Length; j++)

nun


 for (int j = 0; j < 10; j++)

angebe, funktioniert alles einwandfrei.

Wo ist da mein Denkfehler.

Ich hoffe bin an der richtigen Stelle hier. Und ja sicherlich ein Anfängerfehler, aber bin ja da zum Lernen.

lg Marc

hier könnte deine Signatur stehen!

16.806 Beiträge seit 2008
vor 3 Jahren

So ein Fehler kannst Du prinzipiell super mit dem Debugger selbst lösen.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?

Wenn die Exception kommt, dann kannst Du nachschauen worauf Du zugreifst und siehst, welcher Index nicht gefunden wird.

Tipp. Length ist nicht das, was Du willst.
Das Array hat eine extra Methode, wo Du die entsprechende Länge der jeweiligen Dimensionen erhälst.
Multidimensional Arrays (C# Programming Guide)

PS: bitte in Zukunft [Hinweis] Wie poste ich richtig? beachten.
Das heisst:

  • Titel mit dem man was anfangen kann (habs editiert)
  • Vollständige Exception posten.
S
Shayliar Themenstarter:in
20 Beiträge seit 2019
vor 3 Jahren

Danke für das fEedback.

nun die Fehlermeldung hat mir zunächst nichts gebracht gehabt, da nur gesagt wurde , dass der Wert ausserhalb der Range war.

Nun habe ich aber auch das Problem gefunden.

Array.Length funktioniert nur, wenn das Array auch schon Daten enthält.
Mein Array war aber noch "leer".

Ich danke dennoch fürs vor allem hinweisen auf den Debugger.

und Hilfe bei der Suche.

Danke.

hier könnte deine Signatur stehen!

187 Beiträge seit 2009
vor 3 Jahren

Dein Problem ist, dass Du mit

for (int j = 0; j < IntArray.Length; j++)

ebenfalls nur die erste Dimension abfrägst.

Ändere die innere Schleife, so dass die zweite Dimension abgefragt wird.

for (int j = 0; j < IntArray.GetLength(1); j++)