2015-11-08 3 views
0

Я пишу этот код для форматирования строки чисел в матрицу. Я не могу заставить его выводить отформатированную матрицу. Мне нужна помощь.Почему этот код Matrix не выводится?

вот моя главная:

static void Main(string[] args) 
{ 
    string text = "A = [5 4 1; 3 6 1; 2 3 9]"; 
    Console.WriteLine("Original text: '{0}'", text); 

    Matrix calling = new Matrix(text); 
    calling.GetMatrix2(text); 
} 

и это мой класс:

class Matrix 
{ 
    private string textt; 

    public Matrix(string text1) 
    { 
     textt = text1;   
    } 

    public string[,] GetMatrix2(string text) 
    { 
     char[] delimiter1 = { '[', ']' }; 
     char[] delimiter2 = { ';' }; 
     char[] delimiter3 = { ' ' }; 
     string[][] words = text.Split(delimiter1)[1] 
           .Split(delimiter2, StringSplitOptions.RemoveEmptyEntries) 
           .Select(x => x.Split(
             delimiter3, StringSplitOptions.RemoveEmptyEntries)) 
           .ToArray(); 

     string[,] matrix = new string[words.Length, words[0].Length]; 
     for (int i = 0; i < words.Length; ++i) 
     { 
      for (int j = 0; j < words[i].Length; ++j) 
      { 
       matrix[i, j] = words[i][j]; 
      } 
     } 
     return matrix; 
    } 
} 

Я звоню это не так? Я думал, что если я верну «матрицу» (в методе), а затем вызову этот метод «Getmatrix2», тогда он отобразит результирующую матрицу.

+3

[Написать лучшее название на основе вашей конкретной проблемы] (http://meta.stackexchange.com/q/10647/158761) –

+0

* «Я не могу заставить его ничего выводить». * Действительно? Даже «Исходный текст:'? –

+0

У вас есть только один 'Console.WriteLine()'. Вы хотите вывести что-то еще, возможно, после вашего 'GetMatrix2()'? – James

ответ

1

Я подумал, что если я вернусь «матрица» (в методе), а затем вызвать метод, который «Getmatrix2», то он будет отображать полученную матрицу.

Зачем ему это? Вы ничего не печатаете нигде, а не отлаживаете или консоль, вы только конвертируете зубчатый массив в 2D-массив. Простое обращение к методу не будет выводить значения без каких-либо причин.

Что вам не хватает, это итерация над 2D-массивом и печать каждого значения. Если вы хотите, чтобы это выглядело как матрица NXM:

var matrix = calling.GetMatrix2(text); 
for (int i = 0; i < matrix.GetLength(0); i++) 
{ 
    for (int j = 0; j < matrix.GetLength(1); j++) 
    { 
     Console.Write("{0} ", matrix[i, j]); 
    } 
    Console.WriteLine(); 
} 

Это дает:

5 4 1 
3 6 1 
2 3 9 
+0

Создает ли этот формат матрицу 3x3? Я попытался поместить это в мою основную часть, и это дало мне одну колонку чисел. –

+0

@LebronJamess Нет, это просто выводит значения один за другим, добавляя новую строку после каждого значения. Вы можете легко форматировать его, чтобы он печатал 3 значения для каждой строки. –

+0

Как его отформатировать? потому что я написал другой код, который был меньше этого, но в основном делал то же самое. Я застрял в части форматирования. –

Смежные вопросы