본문 바로가기

국비교육/국비교육 복습

day19_api.util.collection3_Test02 : Map 활용 - 로그인 프로그램 (★)

(Q) 다음 아이디와 비밀번호를 Map에 저장해두고 로그인 프로그램을 구현

- 아이디 : testuser , 비밀번호 : testuser1234

- 아이디 : student , 비밀번호 : student1234

- 아이디 : manager , 비밀번호 : manager1234

 

요구사항

- 사용자에게 아이디와 비밀번호를 입력받는다

- 저장소에 있는 아이디=비밀번호 정보와 일치하는 항목이 있다면 로그인 성공 출력

- 일치하는 항목이 없으면 로그인 실패 출력

메인 메소드

package day19_api.util.collection3;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Test02 {

	public static void main(String[] args) {
		
		// 사용자 정보를 저장하기 위한 Map 생성
		Map<String, String> data = new HashMap<>();
		
		// Map에 사용자 정보 입력
		data.put("testuser", "testuser1234");
		data.put("student", "student1234");
		data.put("manager", "manager1234");
		
		// Scanner 생성
		Scanner sc = new Scanner(System.in);
		
		// 입력
		System.out.print("ID : ");
		String idInput = sc.nextLine();
		
		System.out.print("PW : ");
		String pwInput = sc.nextLine();
		
		// 판정 - 문자열을 비교할 때는 반드시 equals를 쓴다
		boolean isLogin = data.containsKey(idInput) && data.get(idInput).equals(pwInput);
		if(isLogin) {
			System.out.println("로그인 성공");
		}
		else {
			System.out.println("로그인 실패");
		}
	}
}

 

** 로그인 판정

boolean isLogin = data.containsKey(idInput) && data.get(idInput).equals(pwInput);

1) data.containsKey(idInput) : Map의 키 중 입력한 아이디(idInput)가 있는지

2) data.get(idInput).equals(pwInput) : 입력한 아이디(idInput)의 값(value)가 pwInput과 일치하는지 (equals)

    - data.get(idInput)의 결과값인 문자열(String)이 비밀번호 문자열(pwInput)과 같은지 

 

** 문자열을 비교할 때는 반드시 equals 메소드를 사용해야 한다

- 비교 연산자 '=='를 사용할 경우

  Map의 idInput과 같은 키(data.get(idInput))가 저장된 위치와 pwInput이 저장된 위치를 비교하기 때문에

  해당 ID에 대한 올바른 PW를 입력해도 로그인 실패가 나온다