在异常处理方面需要一些帮助
本文关键字:帮助 异常处理 方面需 | 更新日期: 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
分别是7
和8
。用空格替换空格没有任何作用:Length
仍然是7
和8
。还要注意,100 3
和1 2 3
具有相同的Length
。
您要检查的是Split(';')
的每个元素(当时是Split(' ')
)是否具有相同的Length
(第一个示例中为4
,第二个示例中是2
和3
)。您还希望在循环中进行测试,因为仅测试前两行并不能保护您免受[1 2; 3 4; 5 6 7 8]
的影响。
最后,Console.WriteLine
并没有抛出异常,考虑到您的任务的措辞:您需要throw
,我认为这就是您在本练习中应该做的。在此处了解有关异常的更多信息。