weixin_45817876 2021-06-05 22:37 采纳率: 0%
浏览 134

c# 多个if-else语句简化

 这是我的代码,我想通过四个参数确定我查找的表的表号,一共有99张表,这里只显示了14张,如果全用if-else语句真的太丑了,一定有更好的办法吧?求告知(最好能写个大概),谢谢大佬们啦!!!

 

public int SelectTableNumber(double para1,double para2,double para3,double para4,double para5)
        {

            try
            {
                if (para1 == 150 && para2 == 180 && para3 == 3 && ((para4 / para5) == 0.75))
                {
                    return 1;
                }
                else if (para1 == 150 && para2 == 180 && para3 == 5 && ((para4 / para5) == 0.75))
                {
                    return 2;
                }
                else if (para1 == 150 && para2 == 240 && para3 == 3 && ((para4 / para5) == 0.75))
                {
                    return 3;
                }
                else if (para1 == 150 && para2 == 240 && para3 == 5 && ((para4 / para5) == 0.75))
                {
                    return 4;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 1 && ((para4 / para5) == 0.5))
                {
                    return 5;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 3 && ((para4 / para5) == 0.5))
                {
                    return 6;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 5 && ((para4 / para5) == 0.5))
                {
                    return 7;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 1 && ((para4 / para5) == 0.75))
                {
                    return 8;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 3 && ((para4 / para5) == 0.75))
                {
                    return 9;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 5 && ((para4 / para5) == 0.75))
                {
                    return 10;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 1 && ((para4 / para5) == 1))
                {
                    return 11;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 3 && ((para4 / para5) == 1))
                {
                    return 12;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 5 && ((para4 / para5) == 1))
                {
                    return 13;
                }
                else if (para1 == 150 && para2 == 300 && para3 == 3 && ((para4 / para5) == 0.75))
                {
                    return 14;
                }
            }
            catch
            {
                Console.WriteLine("表中不包含此项");
            }
            return 0;
        }

  • 写回答

2条回答 默认 最新

  • CSDN专家-文盲老顾 2021-06-05 22:42
    关注

    如果可以把数据存到数据库,读出的数据时直接用数据匹配即可

    如果可以把数据存到文本文件里,用文本文件所在的行来当做return值

    // 以文本文件举例
    
    150,180,3,0.75  // return 1
    150,180,5,0.75  // 因为是第二行,所以return 2
    150,240,3,0.75  // 将文本文件读到数组中
    150,240,5,0.75  // 一行为一个元素,循环一下
    150,270,1,0.5   // 然后切割元素,转数据类型与para参数们比较
    
    // 如果不想用行号,可以直接将返回值也放到文本里
    1,150,180,3,0.75  // return 1
    2,150,180,5,0.75  // 因为是第二行,所以return 2
    3,150,240,3,0.75  // 将文本文件读到数组中
    4,150,240,5,0.75  // 一行为一个元素,循环一下
    5,150,270,1,0.5   // 然后切割元素,转数据类型与para参数们比较
    
    // 如果是一定要用if,可以换swith,虽然分支一样多,但可以少写不少字符
    
    swith(para1){
        case 150:
            swith(para2){
                case 180:
                    swith(para3){
                        .....
                    }
                    break;
            }
            break;
        case 190:
            break;
        default:
            throw new Exception("");
    }
    评论

报告相同问题?

悬赏问题

  • ¥15 如何构建全国统一的物流管理平台?
  • ¥100 ijkplayer使用AndroidStudio/CMake编译,如何支持 rtsp 直播流?
  • ¥20 和学习数据的传参方式,选择正确的传参方式有关
  • ¥15 这是网络安全里面的poem code
  • ¥15 用js遍历数据并对非空元素添加css样式
  • ¥15 使用autodl云训练,希望有直接运行的代码(关键词-数据集)
  • ¥50 python写segy数据出错
  • ¥20 关于线性结构的问题:希望能从头到尾完整地帮我改一下,困扰我很久了
  • ¥30 3D多模态医疗数据集-视觉问答
  • ¥20 设计一个二极管稳压值检测电路