2017-04-19 1 views
0

그래서이 프로그램에서는 암호를 입력하라는 메시지가 표시되지만 암호는 8 자 이상이어야하며 글자와 숫자 만 포함해야합니다. 여기 내 코드입니다 :사용자에게 암호를 입력하고 조건을 확인하도록 요청하는 프로그램

import java.util.Scanner; 

public class Password { 

    public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner input = new Scanner(System.in); 
    System.out.println("Please enter a password: "); 
    String password = input.nextLine(); 
    boolean valid = true; 

    if (valid(password)) { 
     System.out.println("Password accepted!"); 
    } 
    } 

    public static boolean valid(String password) { 
    if (password.length() < 8) { 
     System.out.println("Password must have at least eight characters."); 
     return false; 
    } else { 
    char c; 
    for (int i = 0; i < password.length(); i++) { 
     c = password.charAt(i); 
     if (password.matches("[0-9a-zA-Z]+")) { 
     return true; 
     } else { 
     System.out.println("Password must only contain letters and digits."); 
     return false; 
     } 
    } 
    return true; 
    } 
    } 
} 

제가하는 데 문제는 내가 $$$ 같은 입력을 입력 할 때, 유일한 출력은 "암호는 8 자 이상이 있어야합니다"라고,하지만 난이 출력이 모두 필요 및 "암호는 문자와 숫자 만 포함해야합니다."즉, 두 조건이 모두 거짓인지 확인하고 두 출력을 모두 표시하는 프로그램이 필요합니다. 어떻게 수행합니까?

또한, 내 프로그램을 개선하는 방법에 대한 제안은 도움이 될 것입니다.

감사합니다.

+0

'else'문에서 입력 길이를 검사하는 조건을 추가하십시오. – Mena

+0

@ 메나 그걸 시도해 볼게요, 고마워요! –

답변

1

main 메소드에서 유효한 메소드를 유효한 메소드로 옮기고 모든 조건이 충족되지 않으면 false로 설정할 수 있습니다. 모든 조건을 점검 한 후에 만 ​​반환하십시오.

public static boolean checkValid(String password) { 
    boolean valid = true; 

    if (password.length() < 8) { 
     System.out.println("Password must have at least eight characters."); 
     valid = false; 
    } 
    if(!password.matches("[0-9a-zA-Z]+")) { 
     System.out.println("Password must only contain letters and digits."); 
     valid = false; 
    } 

    return valid; 
} 

그리고 정규식과 일치시키기 위해 암호의 모든 문자를 반복 할 필요가 없습니다.

+0

나는 그것을 할 것이지만, 나의 임무의 일부는 참 변수를 참으로 설정하는 것이다. –

+0

부울 변수는 여전히 true로 설정되어 있지만 실제로 사용하게됩니다. 당신이 가지고있는 곳에서 유효한 변수를 가질 이유가 없습니다. 아무 것도하지 않기 때문에 말입니다. – ElectronicManuel

+0

Ooooh, 나는 당신이 의미하는 것을 얻는다. 정말 고마워! –

관련 문제