2017-12-09 4 views
0

Ich versuche, eine Zeichenfolge, übergeben, an eine Wörterbuch-Dateiliste zu vergleichen. Wenn es einem Wort direkt entspricht, wird es als schwach (Ballon) betrachtet. Wenn es das Wort aus der Wörterbuchdatei (# balloon232) enthält, wird es als moderat angesehen. Weder, noch stark. In diesem Code funktionieren schwache und moderate beide korrekt, aber wenn ein starker Pass eingegeben wird, heißt es, dass es moderat ist. Danke für die Hilfe.Wenn Anweisung innerhalb While-Schleifen nicht korrekt drucken

public static void passwordStrength(String pass, String file2) { 
    boolean found2 = false; 
    boolean found3 = false; 
    try { 
     y = new Scanner(new File(file2)); 
     z = new Scanner(new File(file2)); 
     while (y.hasNextLine()) { 
      if (pass.equals(y.nextLine().trim())) { 
       System.out.println("\nYour password is weak"); 
       found2 = true; 
       break; 
      } 
     } 
     while (z.hasNextLine()) { 
      if (pass.contains(z.nextLine().trim()) && !found2) { 
       System.out.println("\nYour password is moderate"); 
       found3 = true; 
       break; 
      } 
     } 
     if (!found3 && !found2) { 
      System.out.println("\nYour password is strong"); 
     } 
     y.close(); 
     z.close(); 
    } catch (Exception e) { 
     System.out.print("Error"); 
    } 
} 
+0

Sie schneiden die Zeichenfolgen ab, die Sie aus der Datei gelesen haben, aber nicht die Variable "pass". Vielleicht enthält 'pass 'führende oder nachfolgende Leerzeichen? Wenn 'pass' wäre, sagen wir" pass "' und eine getrimmte Zeichenfolge aus der Datei wäre "pass", wäre es keine exakte Übereinstimmung, aber es wäre eine "contains" -Match ... –

Antwort

0

Die Logik scheint in Ordnung, es sollte Drucken Passwort ist stark. Sie sollten alle Zeilen, die Sie eingelesen haben, aus der zu debuggenden Datei ausdrucken und beides sehen, wenn das Passwort und das Wort aus der Datei nicht übereinstimmen.

Ich glaube nicht, dass es sinnvoll ist, mehrere Scanner zu erstellen und die Datei zweimal zu lesen. Sie können die Datei einmal einlesen und den Durchlauf testen, um zu sehen, ob es eine Woche oder moderat ist, und die Zeichenfolge zurückgeben und, falls nicht gefunden, stark zurückkehren. Sie können die Ausnahme so werfen, dass Sie zu Ihnen vorrücken. Es sei denn, Sie möchten speziell die Passwortstärke in dieser Funktion ausdrucken.

Hier ist ein Beispiel.

import java.io.File; 
import java.util.Scanner; 

public class PasswordTest { 
    public static String passwordStrength(String pass, String file2) { 

     try { 
      Scanner fileScanner = new Scanner(new File(file2)); 

      while (fileScanner.hasNextLine()) { 
       String passInFile = fileScanner.nextLine().trim(); 
       if (pass.equals(passInFile)) { 
        return ("Your password is weak"); 
       } 
       if (pass.contains(passInFile)) { 
        return "Your password is moderate"; 
       } 

      } 
     } catch (Exception e) { 
      return e.getMessage(); 

     } 
     return "Your Password is strong"; 
    } 

    public static void main(String[] args) { 
     System.out.println(passwordStrength("test", "test.txt")); 
    } 
}