Java-код Проверить пароль для букв и цифр? - PullRequest
1 голос
/ 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;
        }

}

Ответы [ 6 ]

5 голосов
/ 04 февраля 2011
  public static boolean checkPasswordLetter(String password){
            for (int i = 0; i < password.length();){
            if (!Character.isLetter(password.charAt(i))){
                return false;
                }
            }
        return true;
        }

Здесь вы не увеличивали переменную i, нужно для i ++, или ваш цикл идет вечно, если не буква, то же самое и в checkPasswordDigit

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

Прежде всего ... Дело не в том, что Java не зацикливается и не проверяет логическое значение.Java делает то, что вы говорите.

Теперь то, что вы хотите сделать, отличается от того, что вы делаете.

Что вам нужно сделать, это что-то вроде:

public static void main(String[] args) {
    // ...
    String password = enterPassword();
        while ( !isPasswordValid(password) ) {            
        password = enterPassword();
    }
    System.out.println("Username and Password Accepted!");
}

public static boolean isPasswordValid(String password) {
    // return true if and only if password:
    // 1. has 6-10 characters
    // 2. contains at least one digit
    // 3. contains at least one character
    // print messages accordingly
}
1 голос
/ 04 февраля 2011

checkPasswordLetter и checkPasswordDigit вернут true только в том случае, если ВСЕ символы являются буквами / цифрами соответственно. Это то, что вы имели в виду?

0 голосов
/ 27 августа 2014
import java.util.Scanner;
public class password{
public static void main(String[] args) {
  // Create a Scanner
  Scanner input = new Scanner(System.in);

     // Prompt the user to enter a string
 System.out.print("Enter a password ") ;
  String s = input.nextLine();


 if(isValid(s))
System.out.println(s + " is a valid password");
else
System.out.println(s + " is not a valid password");
}

public static boolean isValid(String s ) 
{

  int i = 0,j=0;


 if(s.length()>=8)
     {
    for(i=0;i<s.length();i++)
   {
     //if(Charcter.isLetter(s.charAt(i))||Digit.isLetter(s.charAt(i)))
   if (Character.isLetterOrDigit(s.charAt(i)))
 {
    if(Character.isDigit(s.charAt(i)))
    j++;
 }
  }
    }
  else
   return false;
    if(j>=2)   
     return true;
       return false;
     } }
0 голосов
/ 07 февраля 2013
import java.util.Scanner;

import java.util.*;
import java.lang.String;
import java.lang.Character;

public class CheckingPassword 
{
    public static void main(String[] args) 
        {
        Scanner input = new Scanner(System.in);
        System.out.print("Please enter a Password: ");
        String password = input.next();
        if (isValid(password)) {
            System.out.println("Valid Password");
        } else {
            System.out.println("Invalid Password");
        }
    }
    public static boolean isValid(String password) {
        if (password.length() < 9) { 
            return false;
        }

else {
        char c = 0 ;  
              int  count=0;
              System.out.println(password.length());
        for (int i = 0;i<=password.length()-1; i++) 
                {
c = password.charAt(i);
System.out.println(c);
if (!Character.isLetterOrDigit(c))
{       
return false;        
}
else if (Character.isDigit(c))
{   
count++;    
if(count==3)
{
return false;
}
}
}
                return true;
}
                }

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

Есть две неправильные вещи.

  1. Проверка первого письма не удалась для первого не-письма.То же самое происходит с вашей проверкой цифр.Вы хотите отклонить, например, если каждый символ не является буквой.Итак, логическая ошибка.

  2. У вас есть три цикла.Плохая идея, потому что если вы пройдете проверку длины один раз, она никогда не будет проверяться снова.Подумайте, что произойдет, если кто-то введет: 12345678. Длина в порядке, но без буквы.Хорошо, теперь введите: a1.Длина не проверяется снова.

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