2017-10-21 46 views
0

Pour le vérificateur de la force de mon mot de passe, je ne parviens pas à afficher le score que je reçois du mot de passe que j'ai entré. Voici le code ci-dessous, le problème est affiché tout le chemin en bas de mon code:Impossible d'afficher la force du mot de passe

import java.lang.Thread.State; 
import java.util.Scanner; 


public class PasswordUtils { 

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    System.out.print("Password to test: "); 
    String pw = sc.nextLine(); 

    if (containsUpperCase(pw)) { 
     System.out.println(" ...contains an upper case letter"); 
    } 
    if (containsLowerCase(pw)) { 
      System.out.println(" ...contains an lower case letter"); 
    } 
    if (containsDigit(pw)) { 
       System.out.println(" ...contains a number"); 
    } 
    if (containsSpecial(pw)) { 
     System.out.println(" ...contains a number"); 
    } 
    sc.close(); 

} 

/** * Déterminer si la chaîne donnée contient une lettre majuscule * @param s la chaîne à check * @return true si et seulement si s contient une lettre majuscule */ public static boolean containsUpperCase (String s) { pour (int letter = 0; letter = 0) { return true; } } return false; }

public static boolean containsLowerCase(String s) { 
     for (int letter=0; letter<s.length(); letter++) { 
     if ("abcdefghijklmnopqrstuvwxyz".indexOf(s.charAt(letter))>=0) { 
         return true; 
     } 
    } 
    return false; 
} 

public static boolean containsDigit(String s) { 
    for (int letter=0; letter<s.length(); letter++) { 
    if ("1234567890".indexOf(s.charAt(letter))>=0) { 
        return true; 
    } 
} 
return false; 

}

public static boolean containsSpecial(String s) { 
    for (int letter=0; letter<s.length(); letter++) { 
    if ("[email protected]#$%^&*()_-+=[]{};:,.<>?/|".indexOf(s.charAt(letter))>=0) { 
        return true; 
    } 
} 
return false; 

}

/** 
* Determine the actual strength of a password based upon various tests 
* @param s the password to evaluate 
* @return the strength (on a 1 to 5 scale, 5 is very good) of the password 
*/ 
public static int score(String s) { 
     int pwscore = 0; 

     //if it contains one digit, add 1 to total score 
     if(s.matches("(?=.*[0-9]).*")) 
      pwscore += 1; 

     //if it contains one lower case letter, add 1 to total score 
     if(s.matches("(?=.*[a-z]).*")) 
      pwscore += 1; 

     //if it contains one upper case letter, add 1 to total score 
     if(s.matches("(?=.*[A-Z]).*")) 
      pwscore += 1;  

     //if it contains one special character, add 1 to total score 
     if(s.matches("(?=.*[[email protected]#$%^&*()_-]).*")) 
      pwscore += 1; 

     System.out.println("The password strength is " + pwscore); 

    return pwscore; // Right now, all passwords stink!!! 
} 

}

Répondre

0

Au lieu de re-mise en œuvre des tests, et vous dites que vous avez déjà du code fonctionnel - je voudrais préfèrent que, comme -

public static int score(String pw) { 
    int score = 1; // <-- 1 to 5... 
    if (containsUpperCase(pw)) { 
     score++; 
    } 
    if (containsLowerCase(pw)) { 
     score++; 
    } 
    if (containsDigit(pw)) { 
     score++; 
    } 
    if (containsSpecial(pw)) { 
     score++; 
    } 
    return score; 
} 

Et puis l'appeler et imprimer le résultat dans main comme

System.out.println("The score is " + score(pw)); 
+0

Merci, comment puis-je afficher la force de mot de passe ici? – V4k4

+0

Merci encore l'homme. Comment écrire une méthode longEnough() qui teste simplement si une chaîne a 8 lettres ou plus et comment l'incorporer dans la méthode score()? – V4k4