直接判断是否符合要求,不符合要求的说明那里不符合要求,符合要求的进行计算,避免造成闪退情况
public static string[] K板核心算法(string K_编码, string K_数量)
{
//300K1500(忠旺体系的编码)
//定义型材信息
string[] 计算结果 = new string[6];//结果
string[] 错误结果 = new string[1];//结果
String[] K_无字母参数;
String[] K_无数字参数;
//判断编码和数量是否为空
if (K_编码 != "" && K_数量 != "")
{
//去除编码中的符号和字母
K_无字母参数 = K_编码.Split(new char[] { '-', 'P', 'J', 'Q', 'C', 'D', 'K', 'L', '/', '(', ')', 'A', 'B', 'E', 'F', 'G', 'H', 'I', 'J', 'M', 'N', 'O', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }, StringSplitOptions.RemoveEmptyEntries);
//去除编码中的数字
K_无数字参数 = K_编码.Split(new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.' }, StringSplitOptions.RemoveEmptyEntries);
//去除编码中的空格,然后转化为string类型
String LG_字符串 = String.Join("", K_无数字参数);
switch (LG_字符串)
{
case "K":
if (K_无字母参数.Length == 2 && float.Parse(K_无字母参数[0]) != 0 && float.Parse(K_无字母参数[1]) != 0)
{
if (float.Parse(K_无字母参数[0]) >= 150 && float.Parse(K_无字母参数[1]) >= 100)
{
计算结果[0] = "主型材: " + K_无字母参数[0] + "型材,长度:" + K_无字母参数[1];
计算结果[1] = "主型材数量: " + K_数量;
计算结果[2] = "封板: 60.5*" + (float.Parse(K_无字母参数[0]) - 16);//固定型材
计算结果[3] = "封板数量: " + int.Parse(K_数量) * 2;
if (float.Parse(K_无字母参数[1]) > 700)
{
计算结果[4] = "加筋长度: " + (float.Parse(K_无字母参数[0]) - 16) + "共1件";
}
else
{
计算结果[4] = "加筋: 无";
}
计算结果[5] = "模板信息: 正常K板";
return 计算结果;
}
else
{
错误结果[0] = "错误: 参数错误!";
return 错误结果;
}
}
else
{
错误结果[0] = "错误: 编码都不写完整,算你大爷!";
return 错误结果;
}
default:
错误结果[0] = "错误: 无效编码,请检查";
return 错误结果;
}
}
else
{
if (K_编码 == "" && K_数量 == "")
{
错误结果[0] = "错误: 编码数量都没有我算你妹?";
}
else if (K_编码 == "")
{
错误结果[0] = "错误: 编码没有怎么算?";
}
else if (K_数量 == "")
{
错误结果[0] = "错误: 数量没填我特么怎么算?";
}
return 错误结果;
}
}
结果:
模拟了清单可能造成的各种错误,都能识别出来
下一篇: 转角C槽算法,未完待续.........