是否有更好的编码方式

时间:2018-10-25 00:38:32

标签: c# .net winforms

所以问题是

“创建一个项目,该项目查找两个城市之间的行驶距离。使用两个包含城市名称的下拉列表。将一个列表标记为出发地,另一个列表标记为目的地。使用查找按钮来计算距离。 将距离存储在二维表中。”

通过使用for循环

是否有更好的编码方式?

好的,这是下面的代码

    private void lookUpButton_Click(object sender, EventArgs e)
    {


          int [,] miles = { {0,1004, 1753, 2752, 3017,1520, 1507,609, 3115,448},
            {1004,0,  921,1780, 2048, 1397, 919,515 , 2176,709},
            { 1753,921, 0,1230,  1399,1343, 517,1435, 2234,1307},
            { 2752,1780,1230,0 , 272,2570,  1732,2251, 1322,2420},
            {3017,2048 ,  1399,272,  0,2716,  1858,2523,  1278,2646},
            { 1520,1397,  1343,2570, 2716,0,  860,1494,  3447,1057},
            { 1507,919,  517,1732, 1858,860, 0,1307,  2734,1099},
            { 609,515,  1435,2251, 2523,1494, 1307,0,  2820,571},
            { 3155,2176,  2234,1322, 1278,3447,  2734,2820,  0,2887},
            { 448,709, 1307,2420,  2646,1057,  1099,571,2887,0 }

        };

                    //var distance = miles[txtDeparture.SelectedIndex,txtDeparture.SelectedIndex];
        // alot of if statments 

        if ((txtDeparture.SelectedIndex == 0) && (txtDestination.SelectedIndex == 0))
        {

            var distance = miles[0, 0];

            txtDistancebox.Text = distance.ToString();

        }
        else if ((txtDeparture.SelectedIndex == 0) && (txtDestination.SelectedIndex == 1))
        {

            var distance = miles[0, 1];

            txtDistancebox.Text = distance.ToString();
        }

        else if ((txtDeparture.SelectedIndex == 0) && (txtDestination.SelectedIndex == 2))
        {

            var distance = miles[0, 2];

            txtDistancebox.Text = distance.ToString();


        }
        else if ((txtDeparture.SelectedIndex == 0) && (txtDestination.SelectedIndex == 3))
        {

            var distance = miles[0, 3];

            txtDistancebox.Text = distance.ToString();


        }

        else if ((txtDeparture.SelectedIndex == 0) && (txtDestination.SelectedIndex == 4))
        {

            var distance = miles[0, 4];

            txtDistancebox.Text = distance.ToString();


        }
        else if ((txtDeparture.SelectedIndex == 0) && (txtDestination.SelectedIndex == 5))
        {

            var distance = miles[0, 5];

            txtDistancebox.Text = distance.ToString();


        }
        else if ((txtDeparture.SelectedIndex == 0) && (txtDestination.SelectedIndex == 6))
        {

            var distance = miles[0, 6];

            txtDistancebox.Text = distance.ToString();


        }
        else if ((txtDeparture.SelectedIndex == 0) && (txtDestination.SelectedIndex == 7))
        {

            var distance = miles[0, 7];

            txtDistancebox.Text = distance.ToString();


        }

        else if ((txtDeparture.SelectedIndex == 0) && (txtDestination.SelectedIndex == 8))
        {

            var distance = miles[0, 8];

            txtDistancebox.Text = distance.ToString();


        }
        else if ((txtDeparture.SelectedIndex == 0) && (txtDestination.SelectedIndex == 9))
        {

            var distance = miles[0, 9];

            txtDistancebox.Text = distance.ToString();


        }

        else if ((txtDeparture.SelectedIndex == 0) && (txtDestination.SelectedIndex == 10))
        {

            var distance = miles[0, 10];

            txtDistancebox.Text = distance.ToString();


        }

        else if ((txtDeparture.SelectedIndex == 1) && (txtDestination.SelectedIndex == 0))
        {

            var distance = miles[1, 0];

            txtDistancebox.Text = distance.ToString();


        }



    }

2 个答案:

答案 0 :(得分:1)

类似这样的东西:

var distance = miles[txtDeparture.SelectedIndex, txtDestination.SelectedIndex];
txtDistancebox.Text = distance.ToString();

答案 1 :(得分:0)

我认为您可以采用一种方法来计算txtDistancebox。 就像...私有int CalculateDistace(int DepartureIndex,int DestinationIndex)