android - 密码生成器显示 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()
}
解决方案
shuffle
return ,Unit
因此调用toString()
将返回. 尝试这个:Unit
kotlin.Unit
Unit
listOfLetters.shuffle()
val password = listOfLetters.joinToString(separator = "")
tvGeneratedPassword.text = password
推荐阅读
- javascript - 在 Vue.js 中获取选择的值
- excel - SAP VBA 自动化 FBL5N
- ethereum - 标识符未找到或不唯一?
- paraview - 如何在 Paraview 中测量曲面网格上的曲线长度
- r - 使用 ifelse 和 case_when 函数对信息进行分组时出现问题
- git - 了解 git pull vs git pull origin vs git pull branch_name
- qt - maliit虚拟键盘调出
- react-native - 如何修改/计算不同屏幕上的余额?
- python - Pandas - 在某些条件下替换另一列的值
- google-cloud-dataflow - Apache Beam - DataStoreIO.v1().write() 命名空间?