Problem med att fylla en 2D-array
Hej.
Jag ska fylla en 2D-array med tecken för att skriva ut ett mönster.
Övre delen av programmet avslutas p.g.a. (out of range exception) när column blir >8.
Programmet funkar när jag skriver ut tecknen med "Console.Write" men inte när jag fyller arrayen.
Jag förstår inte varför. Någon som kan hjälpa mig och förklara vart problemet är?
Jag skulle kunna fylla arrayen manuellt men vill lyckas göra det med loopar istället.
using System;
using System.Linq;
namespace Array9
{
class MainClass
{
public static void Main(string[] args)
{
// #---#---
// -#---#--
// --#---#-
// ---#---#
//int[,] array2D = new int[,] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 } };
string[,] array2D = new string [3, 7];
for (int rad = 0; rad < 4; rad++)
{
for (int column = 0; column < 8; column++)
{
if (rad == column)
array2D[rad, column] = "#";
//Console.Write("#");
else if (rad +4 == column)
array2D[rad, column] = "#";
//Console.Write("#");
else
array2D[rad, column] = "-";
//Console.Write("-");
}
//Console.WriteLine("");
}
/*var rowCount = array2D.GetLength(0);
var colCount = array2D.GetLength(1);
for (int row = 0; row < rowCount; row++)
{
for (int col = 0; col < colCount; col++)
{
Console.Write(String.Format("{0}\t", array2D[row, col]));
Console.WriteLine();
}
}*/
Console.ReadKey();
//.WriteLine(array2D[3,8]);
/* for (int i = 0; i < 4; i++)
{
Console.Write (array2D[i, rad] + "");
}
Console.WriteLine (""); rad++;
for (int i = 0; i < 4; i++)
{
Console.Write(array2D[i, rad] + " ");
}
Console.WriteLine(""); rad++;
for (int i = 0; i < 4; i++)
{
Console.Write(array2D[i, rad] + " ");
*/
}
}
}
Enligt deklarationen har arrayen tre rader och sju kolumner (eller kanske tvärtom).
Då finns kolumnerna 0, 1, 2, 3, 4, 5 och 6. Kolumn 7 finns inte.
Kort sagt, du ska ha samma gräns i loopvillkoret som i deklarationen.
Laguna skrev:Enligt deklarationen har arrayen tre rader och sju kolumner (eller kanske tvärtom).
Då finns kolumnerna 0, 1, 2, 3, 4, 5 och 6. Kolumn 7 finns inte.
Kort sagt, du ska ha samma gräns i loopvillkoret som i deklarationen.
Tack!
Jag tänkte att jag satte ut 0-3 (4 rader) och 0-7 (8 kolumner), men självklart ska det vara (4, 8) som visat antal rader och kolumner.