2017-02-19 3 views
0

поэтому я попытался сделать программу в C#, используя 2D-массив, чтобы рассчитать расстояние между двумя городами, которые выбраны из комбинированного поля. Вот код.Программа массива в C# с комбинированными полями, отображающая расстояние, продолжает сбой. Зачем?

private void btnCalculate_Click(object sender, EventArgs e) 
    { 
     string[,] distance = { 
         { "0, 1004, 1753, 2752, 3017, 1520, 1507" }, 
         { "1004, 0, 921, 1780, 2048, 1397, 919" }, 
         { "1753, 921, 0, 1230, 1399, 1343, 517" }, 
         { "2752, 1780, 1230, 0, 272, 2570, 1732" }, 
         { "3017, 2048, 1399, 272, 0 2716, 1858" }, 
         { "1520, 1397, 1343, 2570, 2716, 0, 860" }, 
         { "1507, 919, 517, 1732, 1858, 860, 0" } 
     }; 

     lblDistance.Text = (distance[cboStartPoint.SelectedIndex, cboDestination.SelectedIndex]); 
    } 

Однако, когда я пытаюсь выбрать два города и нажмите кнопку для расчета и отображения их в этикетке, он выходит из строя, и я получаю сообщение о том,

Необработанное исключение типа «System .IndexOutOfRangeException 'произошло в cityHW.exe

что я делаю неправильно?

ответ

4

Инициализация массива требует улучшения. Каждый элемент массива должен быть в двойных кавычках. Попробуйте ниже. Я использовал текстовый редактор, а не IDE для его решения. Поэтому, пожалуйста, проверьте наличие ошибок синтаксиса (только в случае, если я пропустил какие-либо совпадающие двойные кавычки

string[,] distance = { { "0", "1004", "1753", "2752", "3017", "1520", "1507" }, 
        { "1004", "0", "921", "1780", "2048", "1397", "919" }, 
        { "1753", "921", "0", "1230", "1399", "1343", "517" }, 
        { "2752", "1780", "1230", "0", "272", "2570", "1732" }, 
        { "3017", "2048", "1399", "272", "0 2716", "1858" }, 
        { "1520", "1397", "1343", "2570", "2716", "0", "860" }, 
        { "1507", "919", "517", "1732", "1858", "860", "0" } }; 
+0

спасибо! Я проверил ошибки синтаксиса, как вы сказали, и это сработало. – RedCalxZ

+0

Или удалив все кавычки если все элементы имеют тип 'int'. То, что OP на данный момент является просто длинная строка чисел, запятая и пробел. – JMad

0

Каждый из ваших «внутренних» массивов был один элемент:.

{ 
    // This array has a single item 
    { "0, 1004, 1753, 2752, 3017, 1520, 1507" }, 
    // Also has a single item 
    { "1004, 0, 921, 1780, 2048, 1397, 919" } 
} 

в частности, отметить, что добавление запятые внутри строки не создают дополнительных элементов - это всего лишь одна строка с кучей запятых.