Почему значение переменной int изменяется после преобразования ее в строковый индекс в int? - PullRequest
0 голосов
/ 27 марта 2020
fun main(){
    val num=348597
    println(num.toString()[0].toInt())
}

Я должен получить 3 в качестве выхода, но вместо этого я получаю 51.

Кто-нибудь знает почему или что я могу вместо этого получить 3 в качестве результата?

Ответы [ 2 ]

2 голосов
/ 27 марта 2020

num.toString() дает вам "348597". Взятие [0] из него возвращает первый Char '3', который является 16-битным значением символа Юникода. Вызов toInt() просто преобразует значение символа в целое число. В Unicode кодовые точки <128 такие же, как в ASCII, а 51 - это значение для символа «3». </p>

Чтобы получить символ в виде строки, представляющей «3», измените toInt() на toString() .

0 голосов
/ 27 марта 2020

Йо, я нашел простой способ, как решить эту проблему. Я получил 51, потому что я конвертировал char напрямую в int, а вместо этого он возвращал значение ASCII или дерьмо. Итак, вот код:

fun main(){
val num=348597
//use Character.getNumericValue() instead

println(Character.getNumericValue(num.toString()[0])) }

Я нашел ответ здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...