首页 > 解决方案 > 密码生成器显示 kotlin.Unit

问题描述

我正在尝试根据用户输入制作随机密码生成器,在我使用.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()
    }

标签: androidstringkotlinrandompasswords

解决方案


shufflereturn ,Unit因此调用toString()将返回. 尝试这个:Unitkotlin.UnitUnit

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

推荐阅读