SO my progrm is supose to read hte users password and then s
SO my progrm is supose to read hte users password and then say if it is valid or invaild and then rerun but the second or third time it is run it says the input is invalid even if it is valid help! import java.util.Scanner; public class PasswordTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //variables boolean size; boolean lowCase; boolean upperCase; boolean special; boolean digit; int count = 0; char again = \'Y\'; String extra; //while statement to run prgram again while(again == \'Y\') { //user enter password System.out.print(\"Enter password:\"); String password = scanner.nextLine(); //variables size = false; lowCase = false; upperCase = false; special = false; digit = false; int length = password.length(); //while loop to validate password while (count < length) { char ch = password.charAt(count); if (length >= 8) { size = true; } if (Character.isLowerCase(ch)) { lowCase = true; } if (Character.isUpperCase(ch)) { upperCase = true; } if (!Character.isLetterOrDigit(ch)) { special = true; } if (Character.isDigit(ch)) { digit = true; } count++; } //print out users password System.out.println(\"Entered Password:\" + password); //figure out if password is valid or not if (size && lowCase && upperCase && special && digit) { System.out.println(\"Verdict: \\t\\t Valid\"); } else { System.out.println(\"Verdict: \\t\\t Invalid\"); } //ask user if they want to check password again System.out.print(\"Would you like to check password again? enter Y for yes or N for no: \"); again = scanner.next().charAt(0); again = Character.toUpperCase(again); extra = scanner.nextLine(); } } } Solution
//The entire code is correct, except for the fact that you did not set count inside the while loop to zero. Hence //the wrong answer was being given.
//Check the line where to include the count statement. I have commented it as well.
import java.util.Scanner;
public class PasswordTest
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
//variables
boolean size;
boolean lowCase;
boolean upperCase;
boolean special;
boolean digit;
int count = 0;
char again = \'Y\';
String extra;
//while statement to run prgram again
while(again == \'Y\') {
//user enter password
System.out.println(\"Enter password:\");
String password = scanner.nextLine();
//variables
size = false;
lowCase = false;
upperCase = false;
special = false;
digit = false;
int length = password.length();
count=0; //Here the count has to be set to 0 again.
//while loop to validate password
while (count < length) {
char ch = password.charAt(count);
if (length >= 8) {
size = true;
}
if (Character.isLowerCase(ch)) {
lowCase = true;
}
if (Character.isUpperCase(ch)) {
upperCase = true;
}
if (!Character.isLetterOrDigit(ch)) {
special = true;
}
if (Character.isDigit(ch)) {
digit = true;
}
count++;
}
//print out users password
System.out.println(\"Entered Password:\" + password);
//figure out if password is valid or not
if (size && lowCase && upperCase && special && digit) {
System.out.println(\"Verdict: \\t\\t Valid\");
} else {
System.out.println(\"Verdict: \\t\\t Invalid\");
}
//ask user if they want to check password again
System.out.println(\"Would you like to check password again? enter Y for yes or N for no: \");
again = scanner.next().charAt(0);
again = Character.toUpperCase(again);
extra = scanner.nextLine();
}
}
}

