Programming 기초/Java
[Java] 제어문과 배열 응용
뭉제
2023. 3. 14. 12:50
목차
1. 여러 아이디 인증
2. 이차원 배열
이전에 만든 로그인 프로그램을 확장해 본다.
<참고> https://mungje.tistory.com/22
여러 아이디에 대해서 인증하는 방법
public class AuthApp3 {
public static void main(String[] args) {
String[] users={"tom", "kim", "lee"};
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;
}
}
System.out.println("Hi.");
if(isLogined) {
System.out.println("Master!");
}else {
System.out.println("Who are you?");
}
}
}
break 문
· 더 이상 현재 반복문을 진행하지 않고 빠져나오게 하는 구문(반복문 즉시 종료)
· 배열에 원소들이 더 남아있어도 break문을 만나면 더이상 추가적인 연산을 수행하지 않고,
현재 반복문의 코드블럭 밖으로 빠져나온다.
· 하나의 반복문만 벗어난다.
이차원 배열
이전 게시글의 배열은 선형적으로 구성된 일차원 배열이었다.
이차원 배열을 구성해 아이디와 비밀번호를 모두 저장하는 방식의 로그인 기능을 구현할 수 있다.
1) 배열 선언 -> 타입[ ][ ] 변수이름;
String[][] users;
2) 배열 생성 -> new 타입[행의 개수][열의 개수];
users=new String[3][2]; //3행 2열의 이차원 배열 생성
* 배열을 선언과 동시에 생성 -> 타입[ ][ ] 변수이름 = new 타입[행의 개수][열의 개수];
String[][] users=new String[3][2];
이차원 배열의 length 필드
· 변수.length: 이차원 배열의 행의 개수
· 변수[n].length: n번째 행에 있는 열의 개수
=> 행의 각 원소는 일차원 배열에 대한 레퍼런스가 된다.
public class AuthApp3 {
public static void main(String[] args) {
// String[] users={"tom", "kim", "lee"};
String[][] users= {{"tom", "1111"},
{"kim", "2222"},
{"lee", "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;
}
}
System.out.println("Hi,");
if(isLogined) {
System.out.println("Master!");
} else {
System.out.println("Who are you?");
}
}
}
다음는 위의 이차원 배열을 표로 나타낸 것이다.
· 인덱스를 통해 행, 열의 순서로 접근
- "tom" -> users[0][0]
- "3333" -> users[2][1]
· users[0]은 String 객체가 아닌 String[ ] 객체, 즉 일차원 배열이다.
· 아이디와 비밀번호가 모두 맞는 경우 isLogined를 true로 대입한 후 반복을 종료한다.