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;
}
}
}
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;