Java기반 Back-End 개발자 & 정보처리산업기사 과정 강의 11일차 정리

misung·2021년 3월 30일
0

클래스

클래스 응용하기

예시 1. 아래와 같은 기능을 가진 연락처 프로그램을 작성해보자.

  1. PhoneBook이라는 클래스에 String 타입으로 된 name, phoneNum을 갖고, 이에 대한 getter, setter를 준비한다.

  2. PhoneBook 객체 4개를 갖는 객체 배열을 선언한다.

  3. 입력, 출력, 검색, 종료, 수정 기능을 갖도록 만든다.

입력 : 이름과 전화번호를 입력받아 저장
출력 : 저장된 연락처를 모두 출력
검색 : 이름 혹은 전화번호를 입력받아 연락처에서 찾았으면 출력, 못 찾았으면 "찾지 못했습니다" 출력
종료 : 종료 선택시 종료
수정 : 이름을 입력받고, 해당하는 이름의 연락처가 배열상에 존재하면 새 번호를 입력받아 수정, 찾지 못했으면 "찾지 못했습니다" 출력

PhoneBook

// 멤버 변수로 이름, 전화번호를 갖는다.
private String name;
private String phoneNum;
	
// 이름을 저장할 메소드 
public void setName(String name) {
	this.name = name;
}
	
// 이름을 가져올 메소드 
public String getName() {
	return this.name;
}
	
// 전화번호를 저장할 메소드 
public void setPhoneNum(String phoneNum) {
	this.phoneNum = phoneNum;
}
	
// 전화번호를 가져올 메소드 
public String getPhoneNum() {
	return this.phoneNum;
}

PhoneBookMain

Scanner sc = new Scanner(System.in);
		
// 4개짜리 연락처 객체 배열 선언 
PhoneBook[] list = new PhoneBook[4];
		
// while문의 실행 여부를 판단할 변수 
boolean run = true;
		
// 연락처를 저장할 위치의 index. 
int pBookIndex = 0;
		
while (run) {
	// 메뉴 출력 
	System.out.println("==========================================");
	System.out.println("1. 입력 | 2. 출력 | 3. 검색 | 4. 종료 | 5. 수정");
	System.out.println("==========================================");
			
	// 메뉴 선택문 출력
	System.out.print("메뉴 입력 : ");
			
	// 메뉴 선택 번호를 입력받는다.
	int menuSel = sc.nextInt();
			
	// 메뉴 선택에 따른 switch 분기 
	switch (menuSel) {
	case 1:
		if (pBookIndex < list.length) {
			// contact 객체를 동적 생성한다. 
			PhoneBook contact = new PhoneBook();
						
			System.out.print("이름 입력 : ");
			String nameInput = sc.next();
						
			contact.setName(nameInput);
						
			System.out.print("번호 입력 : ");
			String numInput = sc.next();
						
			contact.setPhoneNum(numInput);
						
			// 객체 배열에 동적으로 생성된 contact를 대입한다.
			list[pBookIndex] = contact;
			++pBookIndex;
		} else {
			System.out.println("연락처가 가득 찼습니다.");
		}
		break;
	case 2:
			// 객체 배열을 돌며, 요소가 비어있지 않은 경우에만 출력한다.
			for (int i = 0; i < list.length; i++) {
				if (list[i] != null) {
					System.out.println("이름 : " + list[i].getName());
					System.out.println("전화번호 : " + list[i].getPhoneNum());
				}
			}
			System.out.println();
		break;
	case 3:
		System.out.print("이름 혹은 번호를 입력하여 검색 : ");
		String searchInput = sc.next();
				
		for (int i = 0; i < list.length; i++) {
					
			// 요소가 null이 아니며, 입력된 문자열이 저장된 요소와 일치하는 경우,
			if (list[i] != null && (searchInput.equals(list[i].getName()) || searchInput.equals(list[i].getPhoneNum()))) {
						
				// 찾은 것으로 판단하고, 해당하는 이름과 전화번호를 출력한다. 
				System.out.println("찾았습니다.");
				System.out.println("이름 : " + list[i].getName());
				System.out.println("전화번호 : " + list[i].getPhoneNum());
				break;
			} else if (i == (list.length - 1)) {
				System.out.println("찾을 수 없습니다.");
			}
		}
		break;
	case 4:
		run = false;
		break;
	case 5:
				
		// 수정하고 싶은 번호를 가진 사람의 이름 입력 
		System.out.print("이름 입력 : ");
		searchInput = sc.next();

		for (int i = 0; i < list.length; i++) {	>				
			// 해당 요소의 이름이 입력한 이름과 일치하면, 
			if (searchInput.equals(list[i].getName())) {
						
				// 바꿀 번호를 입력받는다.
				System.out.print("바꿀 번호 입력 : ");
				String numInput = sc.next();
						
				// 해당 요소의 전화번호를 입력받은 번호로 바꾼다.
				list[i].setPhoneNum(numInput);
				break;
			// 위 조건에 걸리지 않고 배열의 마지막 요소까지 왔으면, 찾는 게 없다는 뜻이므로 
			} else if (i == (list.length - 1)) {
				System.out.println("찾을 수 없습니다.");
			}
		}	
		break;
		default:
			System.out.println("잘못 입력하셨습니다.");
	}
}
	
System.out.println("프로그램 종료.");


==========================================
1. 입력 | 2. 출력 | 3. 검색 | 4. 종료 | 5. 수정
==========================================
메뉴 입력 : 1
이름 입력 : 김철수
번호 입력 : 010-111-1111
==========================================
1. 입력 | 2. 출력 | 3. 검색 | 4. 종료 | 5. 수정
==========================================
메뉴 입력 : 1
이름 입력 : 김두박
번호 입력 : 010-222-2222
==========================================
1. 입력 | 2. 출력 | 3. 검색 | 4. 종료 | 5. 수정
==========================================
메뉴 입력 : 1
이름 입력 : 아무개
번호 입력 : 010-333-3333
==========================================
1. 입력 | 2. 출력 | 3. 검색 | 4. 종료 | 5. 수정
==========================================
메뉴 입력 : 1
이름 입력 : 홍길동
번호 입력 : 010-444-4444
==========================================
1. 입력 | 2. 출력 | 3. 검색 | 4. 종료 | 5. 수정
==========================================
메뉴 입력 : 1
연락처가 가득 찼습니다.
==========================================
1. 입력 | 2. 출력 | 3. 검색 | 4. 종료 | 5. 수정
==========================================
메뉴 입력 : 2
이름 : 김철수
전화번호 : 010-111-1111
이름 : 김두박
전화번호 : 010-222-2222
이름 : 아무개
전화번호 : 010-333-3333
이름 : 홍길동
전화번호 : 010-444-4444

==========================================
1. 입력 | 2. 출력 | 3. 검색 | 4. 종료 | 5. 수정
==========================================
메뉴 입력 : 3
이름 혹은 번호를 입력하여 검색 : 홍길동
찾았습니다.
이름 : 홍길동
전화번호 : 010-444-4444
==========================================
1. 입력 | 2. 출력 | 3. 검색 | 4. 종료 | 5. 수정
==========================================
메뉴 입력 : 3
이름 혹은 번호를 입력하여 검색 : 누구~
찾을 수 없습니다.
==========================================
1. 입력 | 2. 출력 | 3. 검색 | 4. 종료 | 5. 수정
==========================================
메뉴 입력 : 3
이름 혹은 번호를 입력하여 검색 : 010-333-3333
찾았습니다.
이름 : 아무개
전화번호 : 010-333-3333
==========================================
1. 입력 | 2. 출력 | 3. 검색 | 4. 종료 | 5. 수정
==========================================
메뉴 입력 : 5
이름 입력 : 아무개
바꿀 번호 입력 : 010-1234-5678
==========================================
1. 입력 | 2. 출력 | 3. 검색 | 4. 종료 | 5. 수정
==========================================
메뉴 입력 : 2
이름 : 김철수
전화번호 : 010-111-1111
이름 : 김두박
전화번호 : 010-222-2222
이름 : 아무개
전화번호 : 010-1234-5678
이름 : 홍길동
전화번호 : 010-444-4444

==========================================
1. 입력 | 2. 출력 | 3. 검색 | 4. 종료 | 5. 수정
==========================================
메뉴 입력 : 4
프로그램 종료.

0개의 댓글

관련 채용 정보