2015-05-20 5 views
0

Я хочу напечатать 2D-массив, я попытался использовать следующий код, но он только печатает первую строку массива, почему он это делает и не печатает весь массив в одной строке?Печать 2D-массива C#

for (int x = 0, y = 0; y < 3; y++) 
{ 
    for (; x < 3; x++) 
     Console.Write("{0}, ", arr[x, y]); 
} 
+0

Хорошо, мы просто ответили на вопрос тождественно четыре раза. Веселое. Я удалю мой, он ничего не добавит. Но у меня есть верх. Так соблазнительно оставить его. , , – dsolimano

ответ

2

Попробуйте это: печать на основе

for (int x = 0; x < 3; x++) 
{ 
    for (int y = 0; y < 3; y++) 
    { 
     Console.Write("{0}, ", arr[x, y]); 
    } 
} 
2

Column.

for (int y = 0; y < 3; y++) 
{ 
    for (int x = 0; x < 3; x++) 
     Console.Write("{0}, ", arr[x, y]); 
    Console.Write("\n"); //added for better formatting 
} 

или

Если вы не заботитесь о форматировании,

foreach(var arrEle in arr) 
    Console.Write(arrEle+" "); 

Проблема, с вашим кодом является то, что вы не инициализируется x для каждого y. В этом причина, мы должны объявить/инициализировать во внутреннем for-loop.

1

x установлен только на 0 один раз в начале внешнего контура, поэтому во вторых двух итерациях внешнего цикла x=3 и проверка внутреннего цикла не выполняется. Попробуйте следующее:

for (int y = 0; y < 3; y++) 
{ 
    for (int x = 0; x < 3; x++) 
     Console.Write("{0}, ", arr[x, y]); 
} 
+1

'x <3', а также' y <3' выглядит на первый взгляд. 'arr.GetLength (0)', IMHO, следует использовать –

+0

@DmitryBychenko согласился, что бы обобщить его. – dsolimano

1

Вы определили x = 0 во внешнем цикле. Это означает, что после того, как внутренняя петля побежал один раз х всегда будет 3

Try:

for (int y = 0; y < 3; y++) 
{ 
    for (int x = 0; x < 3; x++) 
     Console.Write("{0}, ", arr[x, y]); 
} 
+1

Думайте, что у вас есть опечатка - y никогда не объявляется – dsolimano

1

Просто используйте простой Еогеасп цикл:

foreach (var item in arr) 
    Console.Write("{0}, ", item); 

Еогеасп цикл будет делать с многомерный массивы также.

+0

Дело в том, что мы не знаем, хочет ли он весь массив или первый квадрат 3 * 3. Не так ли? –

+0

@Giorgi Nakeuri: в вопросе говорится: «Я хочу напечатать 2D-массив» и «... печатать весь массив в одной строке», не упоминается * квадрат *, * фрагмент * или тому подобное. –