none
Помогите понять почему не работает следующий код.

    Вопрос

  • Спрашиваю скорее из-за любопытства, как сделать код рабочим я и так разобрался. Задача состояла в том, чтобы программа выводила среднюю букву строки (если строка четной длины, то два средних символа). Код ниже выводит какое-то число, явно не связанное с длиной строки. Интересно узнать, что это за число такое?

    static string str(string s)
    {
        char[] chr = s.ToCharArray();
        return chr.Length % 2 == 0 ? Convert.ToString(chr[chr.Length / 2 - 1] + chr[chr.Length / 2]) : Convert.ToString(chr[chr.Length/2]);
    }



    • Изменено von29 13 января 2018 г. 15:26
    13 января 2018 г. 15:24

Ответы

  • Очевидно, сумма кодов символов chr[chr.Length / 2 - 1] и chr[chr.Length / 2]. Перегоните char в string если вам нужно строковое сложение, т.к. при использовании оператора + срабатывает неявное приведение к int.
    • Помечено в качестве ответа von29 13 января 2018 г. 20:50
    13 января 2018 г. 20:35
  • ага, переделал в это

    return s.Length % 2 == 0 ? s.Substring(s.Length / 2 - 1, 2) : s.Substring(s.Length / 2, 1);

    13 января 2018 г. 21:29

Все ответы

  • Видимо потому что сложение двух char дает не два символа, а один с кодом равным сумме кодов двух символов.

    This posting is provided "AS IS" with no warranties, and confers no rights.

    13 января 2018 г. 20:32
  • Очевидно, сумма кодов символов chr[chr.Length / 2 - 1] и chr[chr.Length / 2]. Перегоните char в string если вам нужно строковое сложение, т.к. при использовании оператора + срабатывает неявное приведение к int.
    • Помечено в качестве ответа von29 13 января 2018 г. 20:50
    13 января 2018 г. 20:35
  • ага, переделал в это

    return s.Length % 2 == 0 ? s.Substring(s.Length / 2 - 1, 2) : s.Substring(s.Length / 2, 1);

    13 января 2018 г. 21:29