2017-11-06 4 views
0

So vor kurzem habe ich diesen Passwort-Checker und ich bin fast fertig. Für meinen Passwort-Checker gibt es ein paar Voraussetzungen.PassWord Checker, Wie listet man alle Probleme auf einmal auf?

  • länger als 8 Zeichen
  • Weniger als 20 Charaktere
  • Muss ein @ -Zeichen verwenden und eine Unterstrichen
  • auch eine Zahl enthalten muss und kann keine Vor- oder Nachnamen
verwenden

Ich habe das alles jetzt erfolgreich codiert. Ich habe einfach einen Code geschrieben, der alle Anforderungen auflistet, die nicht auf einmal und nicht eins nach dem anderen erfüllt sind. Auch wenn das Passwort akzeptabel ist und alle Voraussetzungen erfüllt sind. Ich schätze jede mögliche Hilfe, Danke Jungs

import java.util.Scanner; 

public class PasswordChecker { 
    public static void main(String[] args) { 
    Scanner james = new Scanner(System.in); 
    System.out.println("Hi there, Welcome to Password Heavean where we have the hardest password combinations on this easrth and any other earth."); 
    System.out.println("Take note your password must be longer than 8 and less than 20 characters, Can not have your first or last name, must use a @ sign, must have a number and use at leaast 3 capitals"); 
    System.out.println("First please input you first name."); 
    String passWord; 
    String firstName; 
    String lastName; 
    String firstNameLower; 
    String lastNameLower; 
    String passWordLower; 
    firstName = james.nextLine(); 
    firstNameLower = firstName.toLowerCase(); 
    System.out.println("Also please input you Last name."); 
    lastName = james.nextLine(); 
    lastNameLower = lastName.toLowerCase(); 
    System.out.println("Please enter your password now"); 
    passWord = james.nextLine(); 
    passWordLower = passWord.toLowerCase(); 
    if (passWordLower.length() < 9) { 
     while (passWordLower.length() > 20) { 
     System.out.println("Sorry but your password is greater than or equal too 20 characters, please try a differnent password"); 
     passWord = james.nextLine(); 
     } 
    } 
    if (passWordLower.indexOf(firstNameLower) != -1 || (passWordLower.indexOf(lastNameLower) != -1)) { 
     System.out.println("Sorry but you can not use your first or your last name in the password. "); 
    } 
    if (passWordLower.contains("@")) {} else { 
     System.out.println("Sorry but you must use a @ symbol in your password."); 
    } 
    if (passWordLower.contains("_")) {} else { 
     System.out.println("Sorry but you must use a underscore in your password."); 
    } 
    int counter = 0; 
    for (int i = 0; i < passWordLower.length(); i++) { 
     if (Character.isDigit(passWordLower.charAt(i))) { 
     counter++; 
     } 
    } 
    if (counter < 3) { 
     System.out.println("Sorry but you need to have at least 3 numbers in your password."); 
    } 
    } 
} 
+0

Sorry, immer noch ein wenig wusste, wusste nicht, wie man den Code damit richtig gut einfügen. Aber ich denke nicht, dass es so schlecht aussieht – Jamez

+0

'if (passWordLower.contains (" @ ")) {} else {' kann durch 'if (! PassWordLower.contains (" @ ")) ersetzt werden {' – shmosel

+1

Verwenden Sie a String-Puffer und fügen Sie alle Nachrichten zu ihm in den if-Blöcken, Drucken sie alle auf einmal am Ende. –

Antwort

0

so etwas wie dies versucht,

StringBuffer errorMgs = new StringBuffer(); 

    errorMgs.append("Sorry !! "); 

    if (passWordLower.length() < 9) { 
     errorMgs.append("your password must have minimum 9 characters \nand"); 
    } 
    else if (passWordLower.length() > 20) { 
     errorMgs.append("your password is greater than or equal too 20 characters \nand"); 
    } 
    if (passWordLower.indexOf(firstNameLower) != -1 || (passWordLower.indexOf(lastNameLower) != -1)) { 
     errorMgs.append(" you can not use your first or your last name \nand"); 
    } 
    if (!passWordLower.contains("@")) { 
     errorMgs.append(" you must use a @ symbol \nand"); 

    } 
    if (!passWordLower.contains("_")) { 
     errorMgs.append(" you must use a underscore \nand"); 
    } 
    int counter = 0; 
    for (int i = 0; i < passWordLower.length(); i++) { 
     if (Character.isDigit(passWordLower.charAt(i))) { 
      counter++; 
     } 
    } 
    if (counter < 3) { 
     errorMgs.append(" you need to have at least 3 numbers"); 
    } 

    if (!errorMgs.toString().equals("Sorry !! ")) { //identify given password met all criterias or not 
     errorMgs.append(" in your password."); 
     System.out.println(errorMgs); 
    } else { 
     System.out.println("your password accepted"); 
    } 

Und Ihr out-put so etwas wie dies sein wird,

Hallo, Willkommen bei Password Heavean, wo wir die schwersten Passwort-Kombinationen auf dieser easterth und jeder anderen Erde haben. Beachten Sie Ihr Passwort muss länger als 8 und weniger als 20 Zeichen, kann nicht Ihre Vor- oder Nachnamen haben, müssen ein @ -Zeichen verwenden, muss eine Nummer und verwenden bei leaast 3 Kapitelle

Zuerst bitte Eingangs du Vorname.

Jhone

auch Eingang bitten Sie Nachnamen.

Peter

Bitte geben Sie Ihr Passwort jetzt

sld4f

Leider !! Sie müssen ein @ -Symbol verwenden und Sie müssen einen Unterstrich verwenden und müssen Sie mindestens 3 Nummern in Ihrem Passwort haben.

+0

Nur neugierig, wie man die und loswerden und nur eine neue Zeile? – Jamez

+0

Dann benutze 'System.lineSeparator()' anstelle von '\ n' – aKilleR

+0

Ich habe es versucht, aber es hat nicht funktioniert, wenn Sie über 20 Zeichen ging er glitched. – Jamez

0

Ich habe auch das, wenn + während der Block mit nur während der Block

while (passWord.length() < 9 || passWord.length() > 20) { 
    System.out.println("Sorry but your password is greater than or equal too 20 characters, please try a differnent password"); 
    passWord = james.nextLine(); 
} 
passWordLower = passWord.toLowerCase(); 

String errorMessage = ""; 
if (passWordLower.indexOf(firstNameLower) != -1 || (passWordLower.indexOf(lastNameLower) != -1)) { 
    errorMessage += "Sorry but you can not use your first or your last name in the password. " + System.lineSeparator(); 
} 
if (passWordLower.contains("@")) {} else { 
    errorMessage += "Sorry but you must use a @ symbol in your password." + System.lineSeparator(); 
} 
if (passWordLower.contains("_")) {} else { 
    errorMessage += "Sorry but you must use a underscore in your password." + System.lineSeparator(); 
} 
int counter = 0; 
for (int i = 0; i < passWordLower.length(); i++) { 
    if (Character.isDigit(passWordLower.charAt(i))) { 
    counter++; 
    } 
} 
if (counter < 3) { 
    errorMessage += "Sorry but you need to have at least 3 numbers in your password." + System.lineSeparator(); 
} 

System.out.println(errorMessage); 

Das glaube ich nicht, dass Sie den Unterschied bemerken wird, druckt es so schnell

Verwandte Themen