Search code examples
blackberryeclipse-pluginjava-me

textfield Validation in blackberry java


i am validating a password field where it has to contain atleast one capital letter and one number.i used below code but its not working?

for (int i = 0;i<Password.getText().length(); i++) {

        char i1 = Password.getText().charAt(i);
        boolean valid;
    if ( valid=(i1!='A'||i1!='B'||i1!='C'||i1!='D'||i1!='E'||i1!='F'||i1!='G'||i1!='H'||i1!='I'||i1!='J'||i1!='K'||i1!='L'||i1!='M'||i1!='N'||i1!='O'||i1!='P'||i1!='Q'||i1!='R'||i1!='S'||i1!='T'||i1!='U'||i1!='V'||i1!='W'||i1!='X'||i1!='Y'||i1!='Z')&&(i1!='1'||i1!='2'||i1!='3'||i1!='4'||i1!='5'||i1!='6'||i1!='7'||i1!='8'||i1!='9'||i1!='0')) {

        if(valid=true){
                return true;
            }else{
            return false;
            }
        }

    }

Solution

  • If your password must have at least one capital letter and at least one number your logic is wrong. You should have two booleans.

    boolean hasCapitalLetter = false;
    boolean hasNumber = false;
    
    for (int i = 0;i<Password.getText().length(); i++) {
        char i1 = Password.getText().charAt(i);
    
        if (!hasCapitalLetter) {
            hasCapitalLetter = Character.isUpperCase(i1);
        }
        if (!hasNumber) {
            hasNumber = Character.isDigit(i1);
        }
        if (hasCapitalLetter && hasNumber) {
            return true;
        }
    }
    
    return false;