我的异常处理需要一些帮助

时间:2015-11-10 05:56:14

标签: c# string parsing matrix exception-handling

如果每行中的整数数不相等,我想创建一个异常处理来抛出错误。

例如:Matrix = [3 4; 9 8 1]应该是:matrix = [3 4 2; 9 8 1]

这是我的代码:

这是我的主要内容,我在其中创建了字符串。

string text = "A = [8 5 5 4; 2 6 5 3; 8 5 2 6]";

这是我的班级:

public string[,] Matrix(string text)
{
        char[] splitOne = { '[', ']' };
        char[] splitTwo = { ';' };
        char[] splitThree = { ' ' };
        words = text.Split(splitOne)[1]
                               .Split(splitTwo, StringSplitOptions.RemoveEmptyEntries)
                               .Select(x => x.Split(splitThree, StringSplitOptions.RemoveEmptyEntries))
                               .ToArray();

                if (text.Split(';')[0].Replace(" ", " ").Length != text.Split(';')[1].Replace(" ", " ").Length)
                {
                    Console.WriteLine("unbalanced matrix");
                    return null;
                }

    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];
        }
    }

    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();
    }
    return matrix;
}

我添加了if语句来进行异常处理。但它继续显示错误消息

  

Console.WriteLine("unbalanced matrix");

即使矩阵是平衡矩阵。我需要一些帮助才能使这部分代码工作。我尝试将两个括号中的0和1更改为2和2,它有点起作用但不是真的。

1 个答案:

答案 0 :(得分:0)

Split之后的前两个元素:"8 5 5 4"" 2 6 5 3"Length分别为78。用空格替换空格不会做任何事情:Length仍然是78。另请注意,100 31 2 3具有相同的Length

您要检查的是Split(';')的每个元素Split(' ')是否与第一个示例中的Length 4相同,2和我的第二个例子中的3)。您还希望在循环中执行此操作,因为仅测试前两行并不能保护您免受[1 2; 3 4; 5 6 7 8]的影响。

最后,Console.WriteLine没有抛出异常,考虑到你的任务措辞,我认为你应该在这个练习中做这个:你需要throw。详细了解例外here