2017-12-09 13 views
0

文字列を辞書ファイルリストと比較しようとしています。それが単語に直接一致する場合、弱い(風船)とみなされます。辞書ファイル(#balloon232)からの単語が含まれている場合、それは中程度と見なされます。もしどちらでもなければ、その強い。このコードでは、弱いと中程度の両方が正しく機能しますが、強いパスが入力されると、それは中程度であると言います。助けてくれてありがとう。statement whileループが正しく印刷されない場合

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

ファイルから読み込んだ文字列をトリミングしますが、変数 'pass'はトリミングしません。たぶん 'pass'に先頭や末尾の空白が含まれているのでしょうか? 'pass'が '' pass ''と言っていて、ファイルからトリムされた文字列が' 'pass' 'だった場合、それは完全には一致しませんでしたが、" contains " –

答えて

0

ロジックがうまく印刷されないとパスワードが強く表示されるようです。ファイルから読み込んだすべての行を出力してデバッグし、パスワードとファイルの単語が一致していないときに両方を表示する必要があります。

複数のスキャナを作成してファイルを2回読み取るのは意味がないと思います。あなたは一度ファイルを読み込んでパスをテストして、それが週か中程度かを調べ、文字列を返します。見つからなければ強く返します。例外をスローして、mainが自分のものになるようにすることができます。特にこの機能でパスワードの強さを表示したいのでない限り。

ここにサンプルがあります。

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")); 
    } 
} 
関連する問題