
안녕하세요! 쏘코입니다.
오늘은 지금까지 배운 내용을 종합적으로 응용해보도록 하겠습니다!
0. 종합응용 1
전에 만든 클래스 중에서 AuthApp이 있었죠?
AuthApp 클래스는 1명의 아이디와 비밀번호를 인식한다고 가정하고 만든 프로그램입니다.
이번에는 1억 명의 사용자가 있다고 생각하고 아이디와 비밀번호를 받았을 때 그 아이디와 비밀번호가 1억 명의 사용자의 아이디와 비밀번호 중 하나인지를 확인하고 인증해주는 프로그램을 만들어보도록 하겠습니다.
AuthApp3라는 클래스를 만듭니다.
users에 사람들의 이름을 넣고, inputId는 사용자로부터 입력받습니다.
그리고 로그인이 되었는지를 확인하기 위한 boolean형 데이터를 가진 isLogined 변수를 만들고, false를 할당합니다.
for문을 이용해서 입력받은 inputId와 users 내의 이름을 비교해서 같은 값이 등장하면 isLogined라는 boolean형 변수를 true로 바꿔주고 반복문을 빠져나갑니다.
(TMI : break는 반복문 내에서 쓰이고, break가 있는 줄이 작동하면 그 상태로 반복문을 빠져나갑니다.)
만약 같은 값을 발견하지 못했다면 length만큼 반복하다가 isLogined가 false인 상태로 그대로 빠져나가겠죠?
이제 "Hi,"를 출력하고,
isLogined가 true면 "Master!!"를 출력하고, false면 "Who are you?"를 출력합니다.
받아온 이름을 여러 개의 데이터와 비교하는 작업, 그렇게 어렵지 않죠?

public class AuthApp3 {
public static void main(String[] args) {
String[] users = {"egoing", "ssoco", "youbin"};
String inputId = args[0];
boolean isLogined = false; // 로그인이 됐는지 확인하는 변수
for(int i=0; i<users.length; i++) {
String currentId = users[i];
if(currentId.equals(inputId)) {
isLogined = true;
break; // break를 만나면 반복문을 종료!
}
}
System.out.println("Hi,");
if(isLogined) {
System.out.println("Master!!");
} else {
System.out.println("Who are you?");
}
}
}
1. 종합응용 2
이번에는 비밀번호까지 확인할 수 있도록 만들어봅시다.
이름(id)만 담고 있던 String을 개선해보겠습니다.
String[] 배열 안에는 또 다른 배열이 들어갈 수 있습니다.
이런 경우에는 []를 2번 반복해서 써주고, 할당할 때 전체 배열에 작은 배열들을 넣어주는 형식으로 할당할 수 있습니다.
그리고 id를 받았으니 pass도 받아야겠죠? argument를 2개 받을 수 있도록 Run Configuration에서 바꿔줍니다.
이제 반복문 안에서 String이 아닌 String[] 형태의 배열을 가져옵니다.
users의 1차원 데이터는 배열이었죠?
그렇기 때문에 current라는 변수로 users의 1차원 배열을 가져오기 위해서는 current 역시 String[] 형태의 배열변수여야 합니다.
이제 if 조건문 안에서는 id와 pass 둘 다 비교해야겠죠?
둘다 맞으면 로그인 되고, 둘 중에 하나라도 없거나 틀리면 로그인이 되지 않습니다. (AND 논리 연산자 사용)
아래 출력 부분은 건드리지 않아도 프로그램이 올바르게 작동합니다!


public class AuthApp3 {
public static void main(String[] args) {
// String[] users = {"egoing", "ssoco", "youbin"};
String[][] users = {
{"egoing", "1111"},
{"ssoco", "2222"},
{"youbin", "3333"}
};
String inputId = args[0];
String inputPass = args[1];
boolean isLogined = false; // 로그인이 됐는지 확인하는 변수
for(int i=0; i<users.length; i++) {
String[] current = users[i];
if(
current[0].equals(inputId) &&
current[1].equals(inputPass)
) {
isLogined = true;
break; // break를 만나면 반복문을 종료!
}
}
System.out.println("Hi,");
if(isLogined) {
System.out.println("Master!!");
} else {
System.out.println("Who are you?");
}
}
}
우리는 제어문 파트에서 많은 것들을 배웠습니다.
Boolean 데이터 타입, 비교 연산자, 논리 연산자, 조건문, 반복문, 배열 등등..
프로그램을 만들 때 아주 유용하게 쓸 수 있는 친구들입니다.
이제부터는 약간의 검색과 노력으로 진짜 발전된 프로그램을 만드실 수 있습니다.
계속 원하는 것을 만들어가다 보면, 자바의 놀라운 능력을 더욱 깊게 알게 되실 겁니다! (저도 그 경지까지 가고 싶습니다!!)
그렇다면 다음 포스팅에서는 새로운 주제로 찾아오겠습니다!
읽어주셔서 정말 감사합니다 😃😃
최근댓글