You been on right track, but you just forgot to set counter after each while loop back to zero. Because of that capital letters and digit is never checked.
Also you may consider something like this
import javax.swing.*;
public class PasswordCheck
{
public static void main(String[] args)
{
String input;
input = JOptionPane.showInputDialog("Please enter password");
// Validate user's input
if (isValid(input))
{
JOptionPane.showMessageDialog(null, "Your password is valid!");
}
else
{
JOptionPane.showMessageDialog(null, "Your password is invalid " +
"valid password criteria.");
}
System.exit(0);
}
/**
The isValid method determines password validity.
@param passWord The String to test.
@return true if valid, or else false.
*/
private static boolean isValid(String pw)
{
if(checkLength(pw) && lowCaseCheck(pw) && upCaseCheck(pw) && digCheck(pw))
{
return true;
}
return false;
}
private static boolean checkLength(String psw)
{
if (psw.length() == 5){return true;}
return false;
}
private static boolean lowCaseCheck(String psw)
{
for(int i = 0; i < psw.length(); i++)
{
if(Character.isLowerCase(psw.charAt(i)))
{
return true;
}
}
return false;
}
private static boolean upCaseCheck(String psw)
{
for(int i = 0; i < psw.length(); i++)
{
if(Character.isUpperCase(psw.charAt(i)))
{
return true;
}
}
return false;
}
private static boolean digCheck(String psw)
{
for(int i = 0; i < psw.length(); i++)
{
if(Character.isDigit(psw.charAt(i)))
{
return true;
}
}
return false;
}
}
Moderator
Featured Poster
Reputation Points: 2786
Solved Threads: 873
Code tags enforcer
Offline 6,656 posts
since Dec 2004