Kotlin .toInt () возвращает значение ASCII - PullRequest
0 голосов
/ 13 февраля 2020

Я работаю над пошаговым секвенсором с 3 дорожками, и вращатели для выбора семпла доставляют мне некоторые проблемы. Следующий код выполняется при загрузке сохраненного шаблона для установки правильных образцов.

for ((index, j) in spinners.withIndex()){
   val item = loadingPattern[(48+index)]
   Log.i("item", item.toString())
   Log.i("int", item.toInt().toString)
   j.setSelection(item.toInt())
}

Массив "spinners" содержит 3 счетчика по 5 записей в каждом. «loadingPattern» - это строка, содержащая информацию о шаблоне. Последние три символа являются целыми числами, соответствующими положению счетчика. Когда выбор счетчика следующий:

Спиннер 1: Индекс выбранного элемента 0 Спиннер 2: Индекс выбранного элемента 3 Спиннер 3: Индекс выбранного элемента 4

В журнале "элемент" печатаются именно эти ценности. Журнал «int», однако, печатает 48 + index, поэтому в этом случае 48, 50, 52. Поскольку функция toInt () также вызывается для значения, анализируемого функцией .setSelection (), это исключение срабатывает:

java.lang.ArrayIndexOutOfBoundsException: length=2; index=48

Если у кого-то есть идея, почему это происходит, я был бы очень рад узнать. Большое спасибо всем вам! Я люблю это общение!

edit: если шаблон запрограммирован следующим образом: типичный шаблон

"patternString" имеет следующий вид: 101010101010101010000000100000001000100000001000100010001000420

активные шаги представлены 1, остальные на 0. Последние 3 цифры - это позиции счетчика. Может быть, это поможет:)

Редактировать 2: Я только что нашел этот вопрос: У меня есть строка с числами, когда я получаю символ из строки, он показывает '0'48 в kotlin. Как получить только один символ в kotlin И там говорят, что значение ASCII, равное 0, равно 48. Это означает, что toInt (), вероятно, возвращает значение ASCII, равное 0. Но почему это так и как можно Я получаю только обычное целое число?

1 Ответ

0 голосов
/ 13 февраля 2020

Я узнал это! https://blog.jdriven.com/2019/10/converting-char-to-int-in-kotlin/ Как указано в этой статье, функция toInt () работает только для строк и действительно возвращает значение ASCII символов. Правильный способ сделать это - использовать Character.getNumericValue ().

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