Число должно состоять из 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
Мобильная версия