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번째 행에 있는 의 개수

 

이차원 배열 users의 구조

=> 행의 각 원소는 일차원 배열에 대한 레퍼런스가 된다.

 

 

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로 대입한 후 반복을 종료한다.