(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를 입력해도 로그인 실패가 나온다