Проверка поля идентификатора не проходит проверку с первой попытки.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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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