Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Checking letter case (Upper/Lower) within a string in Java

Tags:

java

The problem that I am having is that I can't get my Password Verification Program to check a string to ensure that, 1 of the characters is in upper case and one is in lower case, it will check the whole string for one of the other and print the error message based on which statement it is checking.

I have looked over this site and the internet for an answer and I am unable to find one. This is homework.

Below is my current code.

import java.util.Scanner;  public class password {     public static void main(String[] args)     {         Scanner stdIn = new Scanner(System.in);         String password;         String cont = "y";         char ch;         boolean upper = false;         boolean lower = false;          System.out.println("Setting up your password is easy. To view requirements enter Help.");         System.out.print("Enter password or help: ");         password = stdIn.next();         ch = password.charAt(0);          while (cont.equalsIgnoreCase("y"))         {             while (password.isEmpty())             {                 System.out.print("Enter password or help: ");                 password = stdIn.next();                    }              if (password.equalsIgnoreCase("help"))             {                  System.out.println("Password must meet these requirements." +                      "\nMust contain 8 characters.\nMust contain 1 lower case letter." +                      "\nMust contain 1 upper case letter.\nMust contain 1 numeric digit." +                      "\nMust contain 1 special character !@#$%^&*\nDoes not contain the word AND or NOT.");                  password = "";             }             else if (password.length() < 8)             {                 System.out.println("Invalid password - Must contain 8 charaters.");                 password = "";             }             else if (!(Character.isLowerCase(ch)))             {                 for (int i=1; i<password.length(); i++)                 {                     ch = password.charAt(i);                      if (!Character.isLowerCase(ch))                     {                           System.out.println("Invalid password - Must have a Lower Case character.");                         password = "";                     }                 }             }             else if (!(Character.isUpperCase(ch)))             {                 for (int i=0; i<password.length(); i++)                 {                            ch = password.charAt(i);                      if (!Character.isUpperCase(ch))                     {                         System.out.println("Invalid password - Must have an Upper Case character.");                         password = "";                     }                 }             }             else             {                 System.out.println("Your password is " + password);                  System.out.print("Would you like to change your password? Y/N: ");                 cont = stdIn.next();                 password = "";             }              while (!cont.equalsIgnoreCase("y") && !cont.equalsIgnoreCase("n"))             {                 System.out.print("Invalid Answer. Please enter Y or N: ");                 cont = stdIn.next();             }         }     } } 
like image 361
Jon A Avatar asked Apr 21 '13 04:04

Jon A


People also ask

How do you check if a character in a string is uppercase or lowercase?

Check the ASCII value of each character for the following conditions: If the ASCII value lies in the range of [65, 90], then it is an uppercase letter. If the ASCII value lies in the range of [97, 122], then it is a lowercase letter. If the ASCII value lies in the range of [48, 57], then it is a number.

How do you check if all letters in a string are lowercase in Java?

To check whether a character is in Lowercase or not in Java, use the Character. isLowerCase() method.

How do you check if a string has an uppercase letter?

Using the isupper() function One way to verify for the uppercase letters is using the string library's isupper() function. If every character in current string is uppercase, this function returns True; otherwise, it returns False.


1 Answers

To determine if a String contains an upper case and a lower case char, you can use the following:

boolean hasUppercase = !password.equals(password.toLowerCase()); boolean hasLowercase = !password.equals(password.toUpperCase()); 

This allows you to check:

if(!hasUppercase)System.out.println("Must have an uppercase Character"); if(!hasLowercase)System.out.println("Must have a lowercase Character"); 

Essentially, this works by checking if the String is equal to its entirely lowercase, or uppercase equivalent. If this is not true, then there must be at least one character that is uppercase or lowercase.

As for your other conditions, these can be satisfied in a similar way:

boolean isAtLeast8   = password.length() >= 8;//Checks for at least 8 characters boolean hasSpecial   = !password.matches("[A-Za-z0-9 ]*");//Checks at least one char is not alpha numeric boolean noConditions = !(password.contains("AND") || password.contains("NOT"));//Check that it doesn't contain AND or NOT 

With suitable error messages as above.

like image 164
Sinkingpoint Avatar answered Oct 05 '22 23:10

Sinkingpoint