Erstellen Sie ein Programm, das nach einem Passwort fragt und prüft, ob Ihr richtig oder nicht
dies ist eine Praxis, die ich mache, für meine Zwischenprüfung morgen. Ich kann nicht scheinen, um herauszufinden, das problem mit meinem code, das ist die Frage:
Dass ein Sicheres Passwort ist eine sehr wichtige übung, wenn viel von unserer Informationen
online gespeichert wird. Schreiben Sie ein Programm, das überprüft, ein neues Kennwort ein, die folgenden
Regeln:• Das Passwort muss mindestens 8 Zeichen lang sein.
• Das Passwort muss mindestens einen Großbuchstaben und einen Kleinbuchstaben
• Das Kennwort muss mindestens eine Ziffer.
Schreiben Sie ein Programm, das nach einem Passwort fragt, dann fragt Sie erneut, um es zu bestätigen. Wenn die
Kennwörter nicht übereinstimmen oder die Regeln nicht erfüllt, wird die Eingabeaufforderung wieder. Ihr Programm
sollte eine Methode, die prüft, ob ein Kennwort gültig ist.
Hier ist der code:
import java.util.Scanner;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author HP Laptop
*/
public class PasswordValidation {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Please enter password : ");
String password = in.nextLine();
System.out.print("Please re-enter the password to confirm : ");
String confirm = in.nextLine();
boolean condition;
condition = isValid(password);
while (!password.equals(confirm) && (!condition)) {
System.out.println("The password is invalid");
System.out.print("Please enter the password again : ");
String Password = in.nextLine();
System.out.print("Please re-enter the password to confirm : ");
String Confirm = in.nextLine();
}
if (isValid(password)) {
System.out.println("The password is valid");
/*} else {
System.out.println("The password is not valid");
System.out.print("Please enter the password again : ");
String Password = in.nextLine();
System.out.print("Please re-enter the password to confirm : ");
String Confirm = in.nextLine();
}*/
}
}
public static boolean isValid(String password) {
if (password.length() < 8) {
return false;
} else {
for (int i = 0; i < password.length(); i++) {
if (Character.isUpperCase(password.charAt(i))) {
}
}
for (int b = 0; b < password.length(); b++) {
if (Character.isLowerCase(password.charAt(b))) {
}
}
for (int c = 0; c < password.length(); c++) {
if (Character.isDigit(password.charAt(c))) {
}
}
return true;
}
}
}
Fehler:
Ich geben Sie einen Namen mit weniger als 8 Ziffern und es würde sagen, das ist gültig, wenn seine nicht, auch wenn alle seine gültig und richtig, es nicht zu drucken, dass seine Gültigkeit.
überprüfen Sie nach jeder Bedingung.
Haben Sie versuchen, Debuggen?
condition
ist ein eklig-variable name.user3821797: als GPRathour und @Dave Newton haben darauf hingewiesen, ich glaube, wenn Ihr Stil eleganter ist, dann würde man viel leichter Debuggen dieses Codes. Ich schlage vor, Sie nennen Namen von Variablen, mehr nützlich und haben viele kleine Funktionen, die jeweils eine ganz bestimmte Aufgabe.
InformationsquelleAutor user3821797 | 2014-07-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
@user3821797: habe ich etwas geändert isValid-Methode. Durch Sie gehen und stellen Sie sicher, dass Sie verstehen, was ich getan habe. Wenn Sie irgendwelche Fragen überhaupt haben, bitte einen Kommentar hier, und ich werde Ihnen helfen.
Ich schlage vor, Sie schauen in dieser Zeile "while (!Passwort.equals(bestätigen) && (!Zustand))". Ich glaube, Sie wollen "||" anstelle von "&&". Sie wollen sagen Sie Ihnen, Ihr Passwort ist falsch, wenn das, was Sie eingeben, nicht mit dem übereinstimmen, was Sie bestätigt ODER wenn das, was Sie eingegeben haben ist nicht gültig.
InformationsquelleAutor Greg Hilston
Könnte es ein paar Probleme hier, aber die eine, die auffällt, ist dies:
Wenn ich geben Sie das Kennwort "abc" und als Bestätigung, "abc", dann
!password.equals(confirm)
istfalse
. Ich denke, Sie wollen, dass dies sein:Weil Sie möchten, wiederholen Sie dieses Verhalten, wenn das Passwort nicht übereinstimmt oder ist ungültig.
Dies ist ebenfalls falsch:
Du nie re-check
isValid
, und Sie sind mit der Speicherung der neu eingegebene Passwort und die Bestätigung von neuen Variablen (bezieht sich auf die Schleife) genanntPassword
undConfirm
. Versuchen Sie, diese Zuordnung direkt auf Ihre vorhandenen Variablen und re-callingisValid
:Aktualisiert für die zweite Ausgabe 🙂
versuchte ;/ nicht drucken gültig, wenn Sie gültig.
InformationsquelleAutor Gian
statt
du willst
Da das Passwort ist ungültig, wenn entweder
isValid(password)
false zurückgegeben, oder dem bestätigten Passwort ist anders als der ursprüngliche Passwort getippt.Deinen aktuellen code nicht übergeben wird und die while-Bedingung, wenn
password.equals(confirm)
, obwohl die Bedingung falsch ist (wegen dem Passwort zu kurz).Darüber hinaus, Ihre while-Schleife aufrufen soll
condition = isValid(password);
wieder nach dem Kennwort und das bestätigte Kennwort erneut eingegeben haben. Sonst würde die while-Schleife nie verlassen.Also entweder schreiben :
Oder mehr aus :
Bearbeitet die Antwort.
danke, aber immer noch nicht drucken gültig, wenn der jeweils gültigen
Welches Kennwort haben Sie? Haben Sie das gleiche Kennwort zweimal?
InformationsquelleAutor Eran
Ich habe obigen code und ging durch eine kleine änderung und haben getestet, über, und es ist nicht zu akzeptieren, das Passwort mit weniger als 8 Ziffern.Und keine Notwendigkeit zum hinzufügen weiterer Variablen.
Durch Sie gehen..
InformationsquelleAutor Boga Srinivas