Как мне добавить параметры в свой генератор паролей?

Я новичок в java, и мне интересно, как мне добавить параметры в свой генератор паролей, такие как «Сколько цифр вы хотите?» или "Сколько символов вам нужно?" в сгенерированном пароле.

Это код, который у меня есть на данный момент, и мне нужна помощь в том, как я бы это сделал.

Заранее спасибо.

public static void main(String[] args) {

    String result = generatePassword(10);
    System.out.println(result);
}

public static String generatePassword(int length) {
    String password = "";

    for (int i = 0; i < length - 2; i++) {
        password = password + randomCharacter("abcdefghijklmnopqrstuvwxyz");
    }

    String randomDigit = randomCharacter("0123456789");
    password = insertAtRandom(password, randomDigit);

    String randomSymbol = randomCharacter("!#$%&'()*+,-.:<=>?@[}^_{}~"); 
    password = insertAtRandom(password, randomSymbol);

    String randomCapital = randomCharacter ("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
    password = insertAtRandom(password, randomCapital);

    System.out.println("This is your new password:");
    return password;
}

public static String randomCharacter(String characters) {
    int n = characters.length();
    int r = (int) (n * Math.random());
    return characters.substring(r, r + 1);
}

public static String insertAtRandom(String str, String toInsert) {
    int n = str.length(); 
    int r = (int)((n + 1) * Math.random());
    return str.substring(0, r ) + toInsert + str.substring(r);
}

}

ваше решение кажется нормальным, я не понял ваш вопрос, вы спрашиваете, как получить ввод от пользователя?

shahaf 22.04.2018 18:27

См. stackoverflow.com/questions/5287538/…

Vietvo 22.04.2018 18:28
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
40
1

Ответы 1

Один из способов сделать это - передать несколько параметров?

т.е. generatePassword(int length, int noDigits, int noSymbols)

Затем замените randomDigit

for (int i = 0; i < noDigits - 2; i++) { password = password + randomCharacter("0123456789"); }

Или же

for (int i = 0; i < noSymbols - 2; i++) { password = password + randomCharacter("!#$%&'()*+,-.:<=>?@[}^_{}~"); }

Если вам нужен ввод пользователя, вы можете попробовать JOptionPane, например:

int digits = Integer.parseInt(JOptionPane.showInputDialog("How many digits?"));

Помимо этого, я думаю, что ваше решение и так кажется прекрасным. Продолжайте практиковаться!

Другие вопросы по теме