Как преобразовать Char в Int?

Поэтому у меня есть "82389235" целых чисел, которая выглядит как "82389235" , но я хотел прокрутить ее, чтобы добавить каждый номер отдельно в MutableList . Однако, когда я обхожу это, я думаю, что это будет обработано:

 var text = "82389235" for (num in text) numbers.add(num.toInt()) 

Это добавляет числа, совершенно не связанные с строкой в ​​списке. Тем не менее, если я использую println для вывода его на консоль, он отлично перебирает строку.

Как правильно преобразовать Char в Int ?

Это потому, что num является Char , т.е. результирующими значениями являются значение ascii этого символа.

Это сделает трюк:

 val txt = "82389235" val numbers = txt.map { it.toString().toInt() } 

Переменная num имеет тип Char . Вызов toInt() на этом возвращает код ASCII, и это то, что вы добавляете в список.

Если вы хотите добавить числовое значение, вы можете просто вычесть ASCII-код из 0 из каждой цифры:

 numbers.add(num.toInt() - '0'.toInt()) 

Что немного приятнее:

 val zeroAscii = '0'.toInt() for(num in text) { numbers.add(num.toInt() - zeroAscii) } 

Это также работает с map , так что вам не нужно создавать MutableList вообще:

 val zeroAscii = '0'.toInt() val numbers = text.map { it.toInt() - zeroAscii } 

В качестве альтернативы вы можете преобразовать каждый символ отдельно в String , поскольку String.toInt() фактически анализирует номер – это кажется немного расточительным с точки зрения созданных объектов:

 numbers.add(num.toString().toInt()) 

На JVM существует эффективный java.lang.Character.getNumericValue () :

 val numbers: List<Int> = "82389235".map(Character::getNumericValue)