학교/JAVA

객체와 객체배열 연습문제 (Phone, PhoneManager)

서윤-정 2023. 10. 26. 02:44

1. Phone 클래스를 작성하시오.

1) 필드: 이름(name), 전화번호(tel)

2) 생성자: 생성시 전달받은 값으로 이름, 전화번호 필드를 초기화 함

3) toString() 메소드 정의

package lab1;

public class Phone {
	private String name;
	private String tel;
	
	public String getName() {
		return name;
	}
	public String getTel() {
		return tel;
	}
	
	@Override
	public String toString() {
		return "Phone [name=" + name + ", tel=" + tel + "]";
	}
	
	
	public Phone(String name, String tel) {
		this.name = name;
		this.tel = tel;
	}
	
	
}

 

 

2. PhoneManager 클래스를 작성하시오. main() 메소드를 가짐

- 단, 한 사람의 전화번호는 하나의 객체로 다룬다.

package lab1;

import java.util.Scanner;

public class PhoneManager {
	 public static void main(String[] args) {
		
		 Scanner scr = new Scanner(System.in);
		 
		 System.out.println("인원수 >> ");
		 int personNum = scr.nextInt(); 	// 인원수 읽어와서 변수 personNum에 저장
		 scr.nextLine();	 //  정수 입력 후 남은 개행 문자를 소비합니다.
		 
		 Phone[] phone = new Phone[personNum];	 // 입력받은 인원수에 맞게 Phone 객체 배열을 생성
		 
		 for(int i = 0; i < personNum; i++) {	// 입력받은 인원수만큼 반복
			 System.out.println("이름과 전화번호(번호는 연속적으로 입력) >> ");
			 String name = scr.next();
			 String tel = scr.next();
			 
			 phone[i] = new Phone(name, tel);	// 입력받은 이름, 전화번호로 Phone 객체 생성 후 배열에 저장
		 }
		 System.out.println("저장되었습니다.");
		 
		 while(true) {	// 무한루프 시작해 사용자가 이름 검색하는 기능 제공
			 System.out.println("검색할 이름 >> ");
			 String name = scr.next();
			 
			 if(name.equals("exit")) {
				 System.out.println("프로그램이 종료되었습니다.");
				 break;
			 }
			 
			 boolean found = false;	// 이름 찾았는지 여부 나타내는 변수 found를 초기화
			 
			 for(int i = 0; i < phone.length; i++) {	// 배열의 모든 요소 반복하여 이름 검색
				 String pName = phone[i].getName();	// Phone 객체에서 이름 가져와 pName 변수에 저장 
				 if(pName.equals(name)) {	// 입력된 이름과 배열 이름 비교해 일치 경우 해당 전화번호 출력, found를 true로 설정
					 System.out.println(phone[i].getName() + "의 번호는 " + 
				 phone[i].getTel() + "입니다.");
					 found = true;
					 break;
				 }
			 }
			 
			 if(!found) {
				 System.out.println(name + "님은 없는 정보입니다.");
			 }
			 scr.nextLine();
		 }
	 }	
}