如果每行中的整数数不相等,我想创建一个异常处理来抛出错误。
例如: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,它有点起作用但不是真的。
答案 0 :(得分:0)
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
。详细了解例外here。