본문 바로가기

JAVA/JAVA TIP

Java 입문 login처리 예제 (1)

 

뭔가 코딩할 게 없나 검색해다가 쉽고 전에 만들었던 팁과도 연관 지어 볼 수 있는 예제를 찾았어요.

 

바로 회원가입 & 로그인 알고리즘인데요. 바로 만들어볼게요.

 

 

 

 BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); // 회원가입 및 로그인 입력을 위한 입력문 선언
        String ID = ""; // 아이디
        String PW = ""; // 비밀번호
        while(true){
            System.out.print("1.Sign Up\n2.Sign in\n3.Exit\nCh : ");
            String Ch = bf.readLine();

            if("1".equals(Ch)){
                System.out.print("ID :");
                String ID_Ch = bf.readLine(); // [회원가입] 아이디 입력

                System.out.print("PW :");
                String PW_Ch = bf.readLine(); // [회원가입] 비밀번호 입력

                ID = ID_Ch; //입력한 아이디 저장
                PW = PW_Ch; // 입력한 비빌번호 저장

            }else if("2".equals(Ch)){
                System.out.print("ID :");
                String ID_Ch = bf.readLine(); // [회원가입] 아이디 입력

                System.out.print("PW :");
                String PW_Ch = bf.readLine(); // [회원가입] 비밀번호 입력

                if(ID.equals(ID_Ch) && PW.equals(PW_Ch)){ // 아이디와 비밀번호가 같으면 성공
                    System.out.println("login Success!");
                }else{
                    System.out.println("Fall.."); // 하나라도 다르면 실패
                }

            }else if("3".equals(Ch)){
                return; // 종료
            }else{
                System.out.println("RE");
            }

        }

이렇게 단순한 코딩이 완성됐습니다.

 

 

기초를 잡고 가자면 여기서 ID와 PW를 while 밖에 선언한 이유가 있습니다.

String ID = ""; // 아이디
String PW = ""; // 비밀번호

전역 변수라는 개념으로 잡고 가시면 됩니다. while문에서는 초기화시키는 곳이 회원가입을 할 때만 있어서 회원가입을 하지 않는 경우에는 처음 입력한 값 그대로를 계속 가져갑니다.

 

만약 while문 안에 선언했다면 회원가입을해도 끝 맞추고 다시 루프를 돌면 초기화돼서 무한 반복을 하게 됩니다.

 

System.out.print("1.Sign Up\n2.Sign in\n3.Exit\nCh : ");

이 부분은 지금까지 자주 사용하던 println과 다르게 print를 사용했는데 여기서 ln의 의미는 Enter라고 생각하시면 됩니다.

또 입력한 문자열 안에 \n은 ln과 같은 줄 바꿈입니다.

 

코드 작성하는 프로그램에서는 \n이 위 코드와 같이 나옵니다. 

 

  if("1".equals(Ch))

Ch의 값이 1과 같으면 true를 반환하는 코드입니다.

이렇게 비교하는 이유는 Ch가 문자열이기 때문이고 정수형으로 비교하실 때는 아래의 코드처럼 하시면 됩니다.

 

 int Ch = 1;
 
 if(Ch == 1)

 

 

if("1".equals(Ch)) // 첫번째 방법


if(Ch.equals("1")) // 두번째 방법

equals로 비교할 수 있는 방법은 이렇게 두 가지가 있습니다.

여기서 첫 번째 방법으로 사용하는 이유는 간단합니다.

 

만약 변수가 Null 값을 가지고 있을 경우를 대비해서 사용하는 방법인데요.

 

변수 Ch이 equals를 호출할 경우 (두 번째 방법)

비교할 문자열이 equals를 호출할 경우에 (첫 번째 방법)

 

결국 똑같은 말 같지만 이해되시나요? 

첫 번째 방법은 메로나가 이 "마트"에 있나 없나 를 나타내고.

두 번째 방법은 이 "마트"에 메로나가 있나 없나를 나타낸 거라고 좀 더 이해하기 쉬울까요..?

 

 

if(ID.equals(ID_Ch) && PW.equals(PW_Ch))

다음은 && 에 대해 적을까 합니다.

&&은 논리 연산자라고 불리는 녀석 중 하나입니다.

 

논리 연산자에는 [ && , || ,! ]가 존재합니다.

순서대로 [ 그리고 , 또는 , 부정 ]입니다.

 

제가 사용한 "그리고" 논리 연산자는 위 코드처럼 ID와 PW가 둘 다 일치해야지 true를 반환한다는 의미입니다.

 

다음 글은 저번에 작성한 메모장을 사용해서 저장 및 출력을 해볼까 합니다.