2017-12-09 26 views
0

문자열을 사전 파일 목록과 비교하려고합니다. 단어와 직접 일치하는 경우 weak (풍선)으로 간주됩니다. 사전 파일 (# balloon232)의 단어가 포함되어 있으면 적당한 것으로 간주됩니다. 둘 다 그렇지 않으면, 그것의 강한. 이 코드에서는 약점과 보통 모두 올바르게 작동하지만 강한 패스가 입력되면 중간이라고합니다. 도와 주셔서 감사합니다.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

암호가 잘 인쇄되어 있으면 암호가 잘 인쇄됩니다. 파일에서 읽은 모든 행을 인쇄하여 디버그하고 암호와 파일의 단어가 일치하지 않을 때를 모두 확인해야합니다.

여러 스캐너를 만들고 파일을 두 번 읽는 것이 합리적이라고 생각하지 않습니다. 파일을 한 번 읽어 들여 패스를 테스트하여 주간인지 검토하고 문자열을 반환하고 찾을 수없는 경우 강하게 반환 할 수 있습니다. 예외를 던져서 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")); 
    } 
}