我刚学会了异常处理。所以,我仍然习惯它。我知道如何进行基本的异常处理,例如输入正确的除法值,如果输入的值不正确,则抛出DividebyZeroException。
但是我需要帮助来做以下事情:
创建异常处理以在
时抛出错误1)每行中的整数数不相等,例如:Matrix = [3 4; 9 8 1] 应:matrix = [3 4 2; 9 8 1]
2)分号“;”我用作分隔符的替换为无效字符,例如: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)
{
try
{
char[] splitOne = { '[', ']' };
char[] splitTwo = { ';' };
char[] splitThree = { ' ' };
words = text.Split(splitOne)[1]
.Split(splitTwo, StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Split(splitThree, StringSplitOptions.RemoveEmptyEntries))
.ToArray();
}
catch
{
Console.WriteLine("Try entering a correct string");
}
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;
}
我如何尝试并抓住工作?这是一个基本的通用捕获,但我如何使它也符合我的以下要求。现在它没有输出我的信息。
答案 0 :(得分:1)
您误解Exceptions
,您希望使用Exceptions
作为数据结构的规则。相反,Exceptions
是在方法中出现错误时,因为您在数学运算中除以0
。这是一个严重的错误,代码不知道该怎么做。
对于这个具体的例子,你应该做if
个陈述。因为您想要应用规则并强制执行它并且Exceptions
不适合这些用例,如果您在哪里实现它,您需要if
语句来检查您是否要应用规则的字符串to,在你的标准之后很好地形成并且之后抛出Exception
。如果你正在创建一个库,那么这是有意义的。
我的代码应该是什么样的解决方案。
String text = "A = [8 5 3 4; 2 6 5 3; 8 5 2 3]";
var startIndex = text.IndexOf('[') + 1;
var length = text.IndexOf(']') - startIndex;
text = text.Substring(startIndex, length);
if(!text.Contains(";"))
{
Console.WriteLine("malformed seperator");
return;
}
var test = text.Split(';').Select((k, i) => new {Key = i, Value = k.Replace(" ", "").Length});
if(!test.All(x => x.Value == test.First().Value))
{
Console.WriteLine("unbalanced array");
return;
}
但是我觉得你的工作比你应该更加努力,你的设计意味着在字符串创建中有很多东西正确,并且使用已经构建的矩阵库会在这里节省大量的工作。
修改强>
更新了解决方案,但我仍然认为字符串矩阵的设计会迫使代码处于许多方向,这是不可靠的。