Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему вызывается исключение на строчке "if (mass[i][x] > mass[j][x])" ?

Andrei00 Ученик (77), закрыт 2 года назад
Нужно отсортировать имена по алфавиту

Using System;

namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{

string[] mass = new string[] { "Andrei", "Valery", "Artem", "Boris", "Alex", "Anton", "Evgene", "Nikolai", "Egor",
"Stanislav", "Mark", "Mikhael" };
string temp;
for (int i = 0; i < mass.Length; i++)
{
for (int j = i + 1; j < mass.Length; j++)
{

for (int x = 0; x < mass[i].Length; x++)
{
if (mass[i][x] > mass[j][x]) // исключение
{
temp = mass[i];
mass[i] = mass[j];
mass[j] = temp;
break;
}

}
}
}

for (int i = 0; i < mass.Length; i++)
{
Console.WriteLine(mass[i]);
}

}
}
}
Лучший ответ
Андрей Высший разум (425151) 2 года назад
Цикл по x - это цикл по СИМВОЛАМ имён. Он НЕ НУЖЕН.

for (int i = 0; i < mass.Length - 1; i++) {
for (int j = i + 1; j < mass.Length; j++) {
if (mass[i].CompareTo(mass[j]) > 0) {
temp = mass[i];
mass[i] = mass[j];
mass[j] = temp;
}
}
}
Остальные ответы
Валерий Шестаков Просветленный (25523) 2 года назад
в mass[j] может быть меньшей длины, чем mass[i]
Jurijus Zaksas Искусственный Интеллект (423882) 2 года назад
Главным образом потому, что всю эту галиматью можно заменить одной строчкой:

Array.Sort(mass);
Похожие вопросы