Генератор паролей (Как добавить конструктор в эту программу) - PullRequest
0 голосов
/ 26 февраля 2019

Это генератор паролей, который я создал с нуля, но я хочу добавить конструктор, чтобы я мог использовать его для целей вызова, а также создать другой класс для его вызова.Если возможно, я хотел бы получить помощь по этой программе.Поэтому моя программа в основном объясняет, как генерировать символы случайных чисел, прописные и строчные буквы.В первый раз, когда я создал код генератора паролей, он работал не очень хорошо, потому что он давал мне все прописные или иногда строчные буквы или просто символы без каких-либо других переменных. Затем я сделал этот код, где я сказал программе, что если этой переменной нетон не может создавать другие переменные, пока эти переменные не будут показаны.

  import java.util.Scanner;
         class Passwd {
             public Passwd()
             {
                 System.out.println("Hello");
             }


            public static void main(String[] args) {
                 new Passwd();
                 Scanner in;`enter code here`
                in = new Scanner(System.in);
                int choice = 0;

                while (choice != 5) {
                    System.out.println("                Password Generation Menu                ");
                    System.out.println("********************************************************");
                    System.out.println("*  [1] Lowercase Letters                               *");
                    System.out.println("*  [2] Lowercase & Uppercase Letters                   *");
                    System.out.println("*  [3] Lowercase, Uppercase, and Numbers               *");
                    System.out.println("*  [4] Lowercase, Uppercase, Numbers, and Symbols  *");
                    System.out.println("*  [5] Quit                                            *");
                    System.out.println("********************************************************");

                    System.out.println("Enter Selection (1-5): ");
                    choice = in.nextInt();

                    if (choice < 1 || choice > 5)
                        System.out.println("Incorrect option....  ");
                    else if (choice > 0 && choice < 5) {
                        System.out.println("Password Length (1-14): ");
                        int passwordLength = in.nextInt();

                        char[] password = new char[passwordLength];
                        int randNum = 0;

                        if (choice == 1) {
                            for (int i = 0; i < passwordLength; i++) {
                                randNum = ((int) (Math.random() * 26 + 97));
                                while (randNum < 97 || randNum > 122) {
                                    randNum = ((int) (Math.random() * 26 + 97));
                                }
                                password[i] = (char) randNum;
                            }
                        }
                        if (choice == 2) {
                            randNum = ((int) (Math.random() * 26 + 97));
                            while (randNum < 97 || randNum > 122) {
                                randNum = ((int) (Math.random() * 26 + 97));
                            }
                            password[0] = (char) randNum;

                            randNum = ((int) (Math.random() * 26 + 65));
                            while (randNum < 65 || randNum > 90) {
                                randNum = ((int) (Math.random() * 26 + 65));
                            }
                            password[1] = (char) randNum;

                            for (int i = 2; i < passwordLength; i++) {
                                randNum = ((int) (Math.random() * 122 - 65 + 1)) + 65;
                                while ((randNum < 65 || randNum > 90) && (randNum < 97 || randNum > 122)) {
                                    randNum = ((int) (Math.random() * 122 - 65 + 1)) + 65;
                                }
                                password[i] = (char) randNum;
                            }

                        }
                        if (choice == 3) {
                            randNum = ((int) (Math.random() * 26 + 97));
                            while (randNum < 97 || randNum > 122) {
                                randNum = ((int) (Math.random() * 26 + 97));
                            }
                            password[0] = (char) randNum;

                            randNum = ((int) (Math.random() * 26 + 65));
                            while (randNum < 65 || randNum > 90) {
                                randNum = ((int) (Math.random() * 26 + 65));
                            }
                            password[1] = (char) randNum;

                            randNum = ((int) (Math.random() * 26 + 48));
                            while (randNum < 48 || randNum > 57) {
                                randNum = ((int) (Math.random() * 26 + 48));
                            }
                            password[2] = (char) randNum;

                            for (int i = 3; i < passwordLength; i++) {
                                randNum = ((int) (Math.random() * 122 - 48 + 1)) + 48;
                                while ((randNum < 65 || randNum > 90) && (randNum < 97 || randNum > 122) && (randNum < 48 || randNum > 57)) {
                                    randNum = ((int) (Math.random() * 122 - 48 + 1)) + 48;
                                }
                                password[i] = (char) randNum;
                            }

                        }
                        if (choice == 4) {
                            randNum = ((int) (Math.random() * 26 + 97));
                            while (randNum < 97 || randNum > 122) {
                                randNum = ((int) (Math.random() * 26 + 97));
                            }
                            password[0] = (char) randNum;

                            randNum = ((int) (Math.random() * 26 + 65));
                            while (randNum < 65 || randNum > 90) {
                                randNum = ((int) (Math.random() * 26 + 65));
                            }
                            password[1] = (char) randNum;

                            randNum = ((int) (Math.random() * 10 + 48));
                            while (randNum < 48 || randNum > 57) {
                                randNum = ((int) (Math.random() * 10 + 48));
                            }
                            password[2] = (char) randNum;

                            randNum = ((int) (Math.random() * 7 + 33));
                            while (randNum < 33 || randNum > 39) {
                                randNum = ((int) (Math.random() * 7 + 33));
                            }
                            password[3] = (char) randNum;

                            for (int i = 4; i < passwordLength; i++) {
                                randNum = ((int) (Math.random() * 122 - 33 + 1)) + 33;
                                while ((randNum < 65 || randNum > 90) && (randNum < 97 || randNum > 122) && (randNum < 48 || randNum > 57) && (randNum < 33 || randNum > 39)) {
                                    randNum = ((int) (Math.random() * 122 - 33 + 1)) + 33;
                                }
                                password[i] = (char) randNum;
                            }
                        }


                        for (int j = 0; j < passwordLength; j++)
                            System.out.print(password[j]);
                        System.out.println("\n");
                    }
                }
                System.out.println("Thank You for using World's Best Password generator \n");
            }
        }

1 Ответ

0 голосов
/ 26 февраля 2019

Что вы можете сделать, это применить принципы ОО и создать класс, отвечающий за генерацию пароля, например, PasswordGenerator.Это будет выглядеть так:

public class PasswordGenerator {

  public String generatePassword(int passwordType) {
    // All your password generation logic
  }
}

Так что вы можете использовать его в другом классе.

public class PasswordThing {

  public void doSomethingWithPassword() {
    PasswordGenerator passwordGenerator = new PasswordGenerator();

    String password = password.generatePassword(1);

    // ...
  }

  // or

  public static void main(String[] args) {

      // Get user choice from command line as you did in your sample
    PasswordGenerator passwordGenerator = new PasswordGenerator();

    String password = passwordGenerator.generatePassword(userChoice);

    // ...
  }

}
...