【问题标题】:ANR android to calculate cpf digit if it is validANR android计算cpf数字是否有效
【发布时间】:2023-01-10 02:05:24
【问题描述】:

我通过计算 CPF 和 CNPJ 数字的方法从 Play 商店获取 ANR,计算有效的 CPF

fun isValidCPF(cpf: String?): Boolean {
            if (cpf == null || cpf.length != 11) return false
            if (cpf.trim { it <= ' ' } == "00000000000") {
                return false
            }
            val digit1 = calculateDigit(cpf.substring(0, 9), weightCPF)
            val digit2 = calculateDigit(cpf.substring(0, 9) + digit1, weightCPF)
            return cpf == cpf.substring(0, 9) + digit1.toString() + digit2.toString()
        }
private val weightCPF = intArrayOf(11, 10, 9, 8, 7, 6, 5, 4, 3, 2)
private fun calculateDigit(str: String, weightCPF: IntArray): Int {
            var sum = 0
            var index = str.length - 1
            var digit: Int
            while (index >= 0) {
                try {
                    digit = Integer.parseInt(str.substring(index, index + 1))
                    sum += digit * weightCPF[weightCPF.size - str.length + index]
                    index--
                } catch (ex: NumberFormatException) {
                    Timber.e(ex, "calculateDigit: %s", ex.message)
                }
            }
            sum = 11 - sum % 11
            return if (sum > 9) 0 else sum
        }

有谁知道我为什么得到这个 AND?我无法重现错误

【问题讨论】:

    标签: java android kotlin


    【解决方案1】:

    我认为“ANR”的意思是“应用程序未响应”,而 CPF 和 CNPJ 是一些巴西以外的人从未听说过的首字母缩写词,我们也不需要知道。

    如果您的 while 循环永远不会终止,就会发生此 ANR。这只有在出现错误时才会发生。幸运的是,您正在记录错误,因此请检查您的日志以查看出了什么问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      • 2023-01-22
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多