Как зациклить сабвуфер со значением переменной? - PullRequest
0 голосов
/ 28 сентября 2019

Я создаю программу, которая выводит случайно сгенерированный пароль, в котором у пользователя есть сомнения относительно того, сколько символов он хочет, чтобы его пароль был.Как бы я пошел о получении ввода от пользователя, а затем зацикливание подпрограммы (которая генерирует один случайный символ)?Любая помощь будет высоко ценится, спасибо!

' this is the code for my input where n = the no. of characters the user wants in their pasword
Public Sub inp()
    Console.WriteLine("How many characters do you want in your password? 
    (up to 20 allowed)")
    n = Console.ReadLine()
End Sub

'this is the simple sub that generates a random number from which a character from my database is chosen
Public Sub randi()
    Randomize()
    i = Rnd() * 92
End Sub

1 Ответ

0 голосов
/ 29 сентября 2019

Давайте подумаем о включенных шагах.

  1. Запросим у пользователя число
  2. Поместите ответ в переменную.
  3. Создайте случайную строку с nсимволы

Похоже, вы позаботились о 1 и 2. Теперь давайте разберем номер 3 на задачи.Какие символы вы хотите включить.Заглавные буквы?Строчные буквы?Числа?Пунктуация?Таблица ASCII сообщит вам, что есть читаемые символы от ASCII 33 до 126. Если вы спросите случайное число в диапазоне от 33 до 126, то измените его на символ, который он представляет, это будет начало.

К счастью .net предоставляет класс Random.Сначала нам нужно получить экземпляр этого класса, чтобы использовать его методы.Private rnd As New Random Теперь у нас есть переменная, содержащая экземпляр случайного класса, поэтому мы можем использовать любые из классифицированных свойств и методов.Есть метод .Next(Int32, Int32), который будет производить случайное число в диапазоне.Первый параметр - это нижнее число в диапазоне, а второй - на единицу больше, чем верхнее число.Возвращаясь к таблице ASCII, нам нужно случайное число, подобное этому rnd.Next(33, 125)

Далее нам нужно изменить результат на символ.Convert.ToChar(Ascii number)

Следующая проблема - получить количество символов, которое запрашивал пользователь.Помните п.Мы можем сделать это в цикле For ... Next.

Внутри цикла мы хотим построить строку с этими случайными символами.Это можно сделать с помощью амперсанда равных, но каждый раз, когда вы изменяете строку, компилятор должен выбросить старую строку и создать совершенно новую, потому что строки неизменяемы.Для решения этой проблемы .net предоставил класс StringBuilder.Мы создаем экземпляр этого класса и затем используем метод .Append для добавления символов в sb.

После цикла мы меняем StringBuilder на обычную строку и возвращаем его в код вызова.

Public Sub Main()
    Console.WriteLine("How many characters do you want in your password? 
(up to 20 allowed)")
    Dim n As Integer = CInt(Console.ReadLine())
    Dim Pword As String = GetRandomString(n)
    Console.WriteLine(Pword)
End Sub

Private rnd As New Random

Private Function GetRandomString(stringLength As Integer) As String
    Dim sb As New StringBuilder
    For c = 1 To stringLength 
        Dim newAscii = rnd.Next(33, 127)
        Dim newChr = Convert.ToChar(newAscii)
        sb.Append(newChr)
    Next
    Return sb.ToString
End Function

В реальном приложении вам нужно будет проверить, ввел ли пользователь правильный номер,Integer.TryParse и проверка на 0, вероятно, сделают это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...