@Mister_krid

Как сделать проверку на ноль?

Метод берет целое число и возвращает его с расположением цифр в порядке убывания. Но если число 0 или 00 и т.д. все ломается т.к. он не кладет ноль в список и я не могу допереть как это исправить. Так же интересно что думаете на счет List в данной реализации ибо я его использовал просто потому, что захотел применить где-нибудь(может массив с циклом смотрелись бы получше). И еще можно ли избавиться от конвертации int в строчный массив, а потом обратно в int(я пытался сделать попроще, но не нашел ничего для конвертации и объединения list int)
public int DescendingOrder(int num)
        {

            var inpNum = num;
            List<int> list = new List<int>();

            while (inpNum > 0)
            {
                list.Add(inpNum % 10);
                inpNum = inpNum / 10;
            }
            list.Sort();
            string[] array = list.Select(n => n.ToString()).ToArray();

            var result = string.Join(null, array);
          
            return Convert.ToInt32(result);
            
              
        }
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
@JuniorNoobie
Сижу в поддержке, пишу мелкие проекты
Ну ошибка, скорее всего, в строчке Convert.ToInt32(). Насколько я помню, если передать туда null или пустую строку, то будет ошибка преобразования, а так и происходит, когда у вас inpNum = 0.
Если вы используете LINQ у себя, то используйте его по полной:
string str = "1243586701";
Console.WriteLine(String.Concat(str.OrderBy(x => x)));
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
do {
    list.Add(inpNum % 10);
    inpNum = inpNum / 10;
} while (inpNum > 0);
Ответ написан
GavriKos
@GavriKos
Сделать для нуля отдельную обработку.
Кстати 00 - такого числа нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы