android - 密码生成器显示kotlin.Unit

标签 android string kotlin random passwords

我正在尝试根据用户输入创建随 secret 码生成器,并且在我使用.toCharArray()。shuffle()函数之前,一切都很好,但是由于没有将其放入预定位置,因此没有太过可预测性。此代码有什么办法可以工作?任何解决方法?我已经尝试过stringbuilder,但是它绕过了用户输入,所以我现在不知道该怎么办。

val chars= "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~@#$%^&*()!"

 override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
        if (fromUser)
        {
            when(seekBar)
            {
                sbNumberOfLetters ->
                {
                    tvLetterCount.text = progress.toString()
                    smallLetters = progress
                }

                sbNumberOfCapitalLetters ->
                {
                    tvCapitalsCount.text = progress.toString()
                    capitalLetterNumber = progress
                }

                sbNumberOfNumerals ->
                {
                    tvNumeralsCount.text = progress.toString()
                    numeralsNumber = progress
                }

                sbNumberOfSpecialChars ->
                {
                    tvSpecialCharsCount.text = progress.toString()
                    specialCharNumber = progress
                }
            }
        }
    }



 private fun generatePassword() {

        for (y in 1..numeralsNumber)
        {
            var randomLetter = Random.nextInt(0, 9)
            listOfLetters.add(chars[randomLetter].toString())
        }

        for (w in 1..smallLetters)
        {
            var randomLetter = Random.nextInt(10, 36)
            listOfLetters.add(chars[randomLetter].toString())
        }

        for (x in 1..capitalLetterNumber)
        {
            var randomLetter = Random.nextInt(36, 62)
            listOfLetters.add(chars[randomLetter].toString())
        }

        for (z in 1..specialCharNumber)
        {
            var randomLetter = Random.nextInt(63, 73)
            listOfLetters.add(chars[randomLetter].toString())
        }

        password = (listOfLetters.joinToString(separator = "",)).toCharArray().shuffle().toString()

        tvGeneratedPassword.text = password

        listOfLetters.clear()
    }

最佳答案

shuffle返回Unit,因此在toString()上调用Unit将返回kotlin.Unit中定义的Unit。试试这个:

listOfLetters.shuffle()
val password = listOfLetters.joinToString(separator = "")
tvGeneratedPassword.text = password

关于android - 密码生成器显示kotlin.Unit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64194068/

相关文章:

python - 有没有更好的方法来交换没有占位符的字符串

Java - 返回 2 个值(字符串数组)

list - Kotlin - 列表过滤中的列表

Android RoleManager删除自己包的角色RoleManager.ROLE_SMS

在 Eclipse 中启动时状态栏中的 Android 应用程序名称未更改

android - 选项卡 fragment 内的 Cardview

android - bindservice 总是返回 false

android - 如何输出不同 productFlavors 和 buildTypes 的所有产品?

python - python中固定位置的字符串替换

Kotlin - 无法使用 `is` 检查接口(interface)使用情况