2017-11-10 3 views
0

암호의 유효성을 테스트하는 Java 프로그램을 작성 중입니다. 몇 가지 다른 문제 외에도, 나는 평평하지 않다. 그것은 잘 컴파일하지만 나는 그것을 시도하고 실행할 때 오류가 발생합니다.유효한 암호를 만들기 위해 문자열을 테스트하십시오.

실행할 때 내 문제는 내가해야하는 것처럼 작동하도록 코드를 가져올 수 없다는 것입니다. 사용자 입력 문자열을 읽고 코드에 의해 배치 된 일부 조건을 사용하여 유효성을 테스트해야합니다. 사용자가 세 가지 조건 모두에 맞는 유효한 암호를 입력 할 때까지 계속 실행됩니다. 이 코드는 이전에 실행되었을 때 잘못된 조건이 손상되었거나 모든 요구 사항을 충족 할 때 암호가 유효하지 않다고 말할 것입니다.

문제를 알지 못하기 때문에 코드에 무엇이 잘못된지 묻는 방법을 잘 모르겠습니다.

사전 조건은 코드에서 여러 가지 방법을 사용한다는 것입니다. 문자열이 아닌 숫자의 마지막 문자는, 루프가 끝없이있을 경우, 당신은 하나 개의 문자를 확인이 루프에서

import java.util.Scanner; 
 
public class Test { 
 
    public static void main(String[] args){ 
 
     Scanner input = new Scanner(System.in); 
 
     
 
     // Prompt user to enter a password 
 
     System.out.print("Enter your password: "); 
 
     String x = input.nextLine(); 
 
     UserInput(x); 
 
     
 
    }  
 
    
 
    public static String UserInput(String x) { 
 
     
 
     // Define variables 
 
     int l = x.length(), 
 
       count = 0; 
 
     
 
     char n = x.charAt(l); 
 
     
 
     boolean valid = false, 
 
       condition = false; 
 
     
 
     String c1 = "", 
 
       s1 = ""; 
 
     
 
     
 
     // While loop tests the validity of the password 
 
     while(valid == false && l <= 0){ 
 
      
 
      if (l < 8){ 
 
       condition = false; 
 
       c1 = "A password must have at least eight characters"; 
 
       continue; 
 
      } 
 
      else if (Character.isLetter(n) == false && Character.isDigit(n) == false){ 
 
       condition = false; 
 
       c1 = "A password must consist of only letters and digits"; 
 
       continue; 
 
      } 
 
      else 
 
       condition = true; 
 
      
 
      while (count < 2) { 
 
        if (Character.isDigit(n) == true) { 
 
         count++; 
 
        } 
 
      } 
 
      
 
      if (count < 2) { 
 
       condition = false; 
 
       c1 = "A password must contain at least two digits"; 
 
       continue; 
 
      } 
 
      
 
      else { 
 
       condition = true; 
 
      } 
 
      
 
      l++; 
 
      
 
      if (condition = true) 
 
       valid = true; 
 
      else 
 
       valid = false; 
 
     } 
 
     
 
     if (valid == true) 
 
      s1 = "Valid Passord"; 
 
     else 
 
      s1 = "Invalid Password"; 
 
     
 
     String m = s1 + "\n\t" + c1; 
 
     System.out.println(m); 
 
     return x; 
 
     
 
    } 
 
}

답변

0

당신은 암호 길이를 설정합니다. "암호 길이가 제로 이하입니다 ... While 루프는"

while(valid == false && l <= 0){ 

인가 당신은 무엇을 의미? 또한

, 최소 숫자를 확인하기 위해 (내 구문을 확인하시기 바랍니다) -

int ndx = 0; 
while (ndx < l) { 
    if (Character.isDigit(x.charAt(ndx++))) { 
    count++; 
    } 
} 

자료 루프를 확인할 문자에, 아니 당신이 찾을 기대.

0
 while (count < 2) { 
       if (Character.isDigit(n) == true) { 
        count++; 
       } 
     } 

:

여기에 지금까지 내 코드입니다. 그것을 기반으로

다음
int l = x.length(), 

루프 -

관련 문제