在异常处理方面需要一些帮助

本文关键字:帮助 异常处理 方面需 | 更新日期: 2023-09-27 18:21:14

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

例如:矩阵=[3 4;9 8 1]应为:矩阵=[3 4 2;9 8 1]

这是我的代码:

这是我在main中创建的字符串。

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,这有点奏效,但不是真的。

在异常处理方面需要一些帮助

Split之后的前两个元素:"8 5 5 4"" 2 6 5 3",它们的Length分别是78。用空格替换空格没有任何作用:Length仍然是78。还要注意,100 31 2 3具有相同的Length

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

最后,Console.WriteLine并没有抛出异常,考虑到您的任务的措辞:您需要throw,我认为这就是您在本练习中应该做的。在此处了解有关异常的更多信息。