1. PhoneBookMain(1) 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package phoneBook;
 
import java.util.Scanner;
 
class PhoneBook {
    String name;
    String number;
}
 
public class PhoneBookMain01 {
    public static void main(String[] args) {
 
        // #1. 전화번호 저장하기
        Scanner sc = new Scanner(System.in);
        System.out.println(">>> 전화번호 저장하기 <<<");
 
        // #1-1. 사용자 수 입력받기
        System.out.print("사용자 수 입력: ");
        int num = Integer.parseInt(sc.nextLine());
 
        // #1-2. 입력받은 수 만큼 객체 배열 생성하기
        PhoneBook[] phoneBook = new PhoneBook[num];
 
        // #1-3. 이름과 전화번호 입력받기
        for (int i = 0; i < phoneBook.length; i++) {
            phoneBook[i] = new PhoneBook();
 
            System.out.print((i + 1+ ". 이름 입력: ");
            phoneBook[i].name = sc.nextLine();
 
            System.out.print((i + 1+ ". 번호 입력: ");
            phoneBook[i].number = sc.nextLine();
        }
        System.out.println("저장 완료!");
 
        // #2. 전화번호 검색하기
        System.out.println(">>> 전화번호 검색하기 <<<");
 
        while (true) {
 
            // #2-1. 이름 입력받기
            System.out.print("검색할 이름 입력: ");
            String name = sc.nextLine();
 
            // #2-2. 입력받은 내용이 stop이면, 프로그램 종료
            if (name.equalsIgnoreCase("stop")) {
                System.out.println("프로그램 종료");
                break;
            }
 
            // #2-3. 입력받은 이름을 토대로 전화번호 출력하기
            int check = -1;
 
            for (int i = 0; i < phoneBook.length; i++) {
                if (name.equals(phoneBook[i].name)) {
                    System.out.println(phoneBook[i].number);
                    check = 1;
                }
            }
 
            // #2-4. 이름이 없는 경우, 안내메세지 출력하기
            if (check == -1) {
                System.out.println("없는 이름입니다.");
            }
        }
    }
}
cs



2. PhoneBookMain(2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package phoneBook;
 
import java.util.Scanner;
 
class PhoneBook {
    String name;
    String number;
 
    Scanner sc;
    PhoneBook[] phoneBook;
 
    public PhoneBook() {
        sc = new Scanner(System.in);
    }
 
    PhoneBook(String name, String number) {
        this.name = name;
        this.number = number;
    }
 
    void insert() {
        // #1. 전화번호 저장하기
        Scanner sc = new Scanner(System.in);
        System.out.println(">>> 전화번호 저장하기 <<<");
 
        // #1-1. 사용자 수 입력받기
        System.out.print("사용자 수 입력: ");
        int num = Integer.parseInt(sc.nextLine());
 
        // #1-2. 입력받은 수 만큼 객체 배열 생성하기
        phoneBook = new PhoneBook[num];
 
        // #1-3. 이름과 전화번호 입력받기
        for (int i = 0; i < phoneBook.length; i++) {
            phoneBook[i] = new PhoneBook();
 
            System.out.print((i + 1+ ". 이름 입력: ");
            phoneBook[i].name = sc.nextLine();
 
            System.out.print((i + 1+ ". 번호 입력: ");
            phoneBook[i].number = sc.nextLine();
        }
        System.out.println("저장 완료!");
    } // insert()
 
    void search() {
        // #2. 전화번호 검색하기
        System.out.println(">>> 전화번호 검색하기 <<<");
 
        while (true) {
 
            // #2-1. 이름 입력받기
            System.out.print("검색할 이름 입력: ");
            String name = sc.nextLine();
 
            // #2-2. 입력받은 내용이 stop이면, 프로그램 종료
            if (name.equalsIgnoreCase("stop")) {
                System.out.println("프로그램 종료");
                break;
            }
 
            // #2-3. 입력받은 이름을 토대로 전화번호 출력하기
            int check = -1;
 
            for (int i = 0; i < phoneBook.length; i++) {
                if (name.equals(phoneBook[i].name)) {
                    System.out.println(phoneBook[i].number);
                    check = 1;
                }
            }
 
            // #2-4. 이름이 없는 경우, 안내메세지 출력하기
            if (check == -1) {
                System.out.println("없는 이름입니다.");
            }
        } // while
    } // search()
 
    void run() {
        insert();
        search();
    }

}
 
public class PhoneBookMain02 {
    public static void main(String[] args) {
 
        PhoneBook myPhoneBook = new PhoneBook();
        myPhoneBook.run();
 
    }
}
cs

# 설명 

Line 9~10: Scanner sc와 PhoneBook 클래스 안에서 쓰이는 인스턴스 변수 PhoneBook[] phoneBook을 선언해준다. 

Line 13: 기본 생성자 안에서 선언해놓은 Scanner sc를 초기화 해준다. 

Line 57: equalsIgnoreCase(String): String의 대소문자 여부를 무시하고 문자열을 비교한다. 

Line 79~82 : 생성자에서는 최대한 초기화 위주가 되야한다. 때문에 실질적으로 실행되는 부분은 이와 같은 run() 메서드 안에서 묶어 실행하는 것이 좋다.