2017-11-04 3 views
0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // Changed from *int[,] matrix = new int[2, 2];* 
      int[,] matrix = new int[3, 3]; 
      // Still getting error with "[3,3]" 

      matrix[0, 0] = 1; 
      matrix[0, 1] = 2; 
      matrix[0, 2] = 3; 

      matrix[1, 0] = 4; 
      matrix[1, 1] = 5; 
      matrix[1, 2] = 6; 

      matrix[2, 0] = 7; 
      matrix[2, 1] = 8; 
      matrix[2, 2] = 9; 

      Console.Write(matrix[0, 2]); 

      Console.ReadKey(); 
     } 
    } 
} 

Hier ist ein grundlegendes Programm zur Ausführung über die Befehlszeile.Multidimensionale Arrays: "Index lag außerhalb der Grenzen des Arrays."

Beim Laufen, statt die Anzeige der Zahl "3" in einem Array gespeichert [0,2], ich mit diesem Fehler präsentiert bin:

System.IndexOutOfRangeException: ‚Der Index war außerhalb der Grenzen des Arrays . "

+0

sollte es 'new int [3, 3];' sein, bedeuten die Zahlen hier die Längen jeder Dimension. –

+0

Vielleicht möchten Sie sich das ansehen: https://stackoverflow.com/questions/3814145/how-can-i-declare-a-two-dimensional-string-array –

+0

Das Buch, das ich lese, gab mir den Eindruck, dass Arrays Zähle aufwärts von Null, und deshalb würden 0, 1, 2 als "drei" zählen. – Jojo

Antwort

0

"neue int [2, 2];" bedeutet, dass die Matrix 2 x 2 ist. Sie greifen auf die dritte Spalte nach Matrix [0, 2] zu, daher die Ausnahme.

0

@josias int[,] matrix = new int[2, 2]; zeigt, dass Sie eine Matrix mit 2 Zeilen und 2 Spalten haben. In Ihrem Code ordnen Sie die Werte jedoch in 3 Zeilen und 3 Spalten zu. Bitte verwenden Sie den folgenden Code, wenn Sie solche Werte haben.

int[,] matrix = new int[3, 3];

+0

Ich dachte, wir zählen von Null auf? – Jojo

+0

Ich aktualisiere den ursprünglichen Beitrag. Ich habe auf 3 * 3 Matrix geändert und bekomme immer noch "Außengrenzen" -Fehler – Jojo

0

Dies ist direkt von C# Specifications:

Each dimension of an array has an associated length which is an integral number greater than or equal to zero. The dimension lengths are not part of the type of the array, but rather are established when an instance of the array type is created at run-time.

Und nun das ist der Teil, der Ihre Frage beantwortet:

The length of a dimension determines the valid range of indices for that dimension: For a dimension of length N, indices can range from 0 to N - 1 inclusive.

Daher ist der Bereich, in Ihrem Fall sein 0 bis 2 - 1 welche 0 und 1. In einigen Sprachen wie VB.NET wird Ihre Annahme corr sein ect aber nicht in C#.

Lesen Sie auch this SO thread.

Verwandte Themen