Java-код Проверить пароль на буквы и цифры? - PullRequest
0 голосов
/ 04 февраля 2011

Первый пост был confusamagin. Мое задание - создать программу для ввода пароля. Необходимо проверить пароль, чтобы увидеть, содержит ли он хотя бы одну цифру и одну букву. Также длина пароля должна быть от 6 до 10.

Моя проблема состоит в том, чтобы выяснить, как определить, существуют ли цифры и буквы в пароле. В области проверки пароля я не уверен, с чего начать. Я не уверен, как увидеть, есть ли в нем буква и цифра. Я знаю, как это сделать, или с помощью оператора for для подсчета и проверки, но все, что он делает, это проверяет, чтобы увидеть, что он содержит все буквы или все цифры.

import java.util.Scanner;

class Password {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

//------ENTER A USERNAME
        System.out.println("Welcome please enter your username and password.");
        System.out.print("Username >>");
        input.nextLine();


//------PASSWORD AUTHENTICATION BEGIN       
        String password = enterPassword();
            while ( !checkPassword(password) ) {
            System.out.println("Password must be 6 - 10 characters long!"); 
            password = enterPassword();
            }

//------PASSWORD VERIFY
        String passwordverify = enterPassword();
        while (!password.equals(passwordverify)){
            System.out.println("ERROR - Passwords DO NOT MATCH Re-Enter Passwords Again");
            password = enterPassword();

        }

//------ACCEPT PASSWORD     
        System.out.println("Username and Password Accepted!");

        }


//--ENTER PASSWORD STATEMENT
    public static String enterPassword(){
        String password;
        Scanner input = new Scanner(System.in);
        System.out.print("Password >>");
        password = input.nextLine();
        return password;
        }

//--BOOLEAN CHECK PW    
    public static boolean checkPassword(String password){
        int length;
        length = password.length();
            if (length < 6 || length > 11){
            return false;
            }
        for (int i = 0; i < password.length();i++){
            if (!Character.isLetter(password.charAt(i)))
            return false;
        }
        return true;
        }

}

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

В вашем коде отсутствуют только счетчики переменных. Оставьте два счетчика: один для подсчета букв, другой для подсчета чисел и выполните тест if в конце обоих для циклов внутри checkPassword, чтобы проверить, являются ли оба счетчика хотя бы одним.

Альтернативой для этого является использование регулярного выражения. Смотрите эту ссылку: http://www.mkyong.com/regular-expressions/how-to-validate-password-with-regular-expression/

1 голос
/ 04 февраля 2011

Не записывая домашнее задание .... вы на правильном пути, вы должны убедиться, что ваше количество букв и количество цифр не меньше 1.

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