Проверка поля идентификатора не проходит проверку с первой попытки.Android

Форум для тех, кто программирует под Android
Anonymous
Проверка поля идентификатора не проходит проверку с первой попытки.

Сообщение Anonymous »

У меня есть поле, в котором пользователь вводит 9-значное число.
Число должно состоять из 9 цифр и должно соответствовать алгоритму Луна:

Код: Выделить всё

 MaterialTextField(
label = formModel.someNumber.placeholder,
text = formModel.someNumber.value,
onTextChange = {
formModel.someNumber.value = it
showError = false
if (it.isSomeNumberValid) {
showSomeNumberError = false
} else {
showSomeNumberError = true
}

validateForm()
},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
errorMessage = if (showError || showSomeNumberError) formModel.errorSomeNumberMessage else null
)
Проверка алгоритма Луна определена ниже:

Код: Выделить всё

fun String.isSomeNumberValid(): Boolean {

if (this.length != 9) return false

var sum = 0
for (i in this.indices) {
val digit = this[i].toString().toInt()
val value = if (i % 2 == 0) digit else digit * 2
sum += if (value > 9) value - 9 else value
}
return sum % 10 == 0
}
Итак, если я наберу какое-то число, которое должно пройти все эти проверки, я получу ошибку. Когда я переписываю из него одну цифру, ошибка сбрасывается.
Я попробовал сбросить ошибку до того, как она проверится на проверку, удалил двойную проверку, чтобы число было длиной 9 цифр, не получилось не поможет. Я новичок в Kotlin, поэтому буду благодарен за любую помощь с объяснениями.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -first-try

Вернуться в «Android»