실행 예시
인원수>>3
이름과 전화번호(이름과 번호는 빈 칸없이 입력)>>홍길동 111-1111
이름과 전화번호(이름과 번호는 빈 칸없이 입력)>>이순신 333-3333
이름과 전화번호(이름과 번호는 빈 칸없이 입력)>>유관순 555-5555
저장되었습니다...
검색할 이름>>이순신
이순신의 번호는 333-3333 입니다.
검색할 이름>>그만
import java.util.Scanner;
class Phone { // 사람의 정보 저장을 위한 클래스
private String name;
private String tel;
public Phone(String name, String tel) {
this.name = name;
this.tel = tel;
}
public String getName() {
return name;
}
public String getTel() {
return tel;
}
}
class PhoneBook {
private Scanner scanner;
private Phone[] pArray;
public PhoneBook() {
scanner = new Scanner(System.in);
}
void read() {
// 저장할 사람의 수(n)를 입력받고,
System.out.print("인원수>> ");
int n = scanner.nextInt();
// n 명을 저장할 배열 선언
Phone[] pArray = new Phone[n];
// 반복문을 통해서 이름, 전화 번호 입력받고, Phone 객체 생성
for (int i = 0; i < pArray.length; i++) {
System.out.print("이름과 전화번호(이름과 번호는 빈 칸없이 입력)>>");
String name = scanner.next();
String tel = scanner.next();
pArray[i] = new Phone(name, tel);
}
System.out.println("저장되었습니다...");
}
String search(String name) {
// 반복문을 통해서 Phone객체 배열을 순회하여, name 검색 및 리턴, 없을 경우에 null 리턴
String name_return = "";
for (int i = 0; i < pArray.length; i++) {
if (pArray[i].getName().equals(name)) {
name_return = pArray[i].getTel();
break;
}
}
return name_return;
}
void run() {
read();
while (true) {
System.out.print("검색할 이름>>");
String name = scanner.next();
if (name.equals("그만"))
break;
String tel = search(name);
if (tel == null)
System.out.println(name + " 이 없습니다.");
else
System.out.println(name + "의 번호는 " + tel + " 입니다.");
}
}
}
public class test3 {
public static void main(String[] args) {
new PhoneBook().run();
}
}
인원수>> 2
이름과 전화번호(이름과 번호는 빈 칸없이 입력)>>이순신 111-1111
이름과 전화번호(이름과 번호는 빈 칸없이 입력)>>홍길동 333-3333
저장되었습니다...
검색할 이름>>이순신
Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "this.pArray" is null
at ch02.PhoneBook.search(test3.java:62)
at ch02.PhoneBook.run(test3.java:80)
at ch02.test3.main(test3.java:92)
이렇게 오류가 떠요
Phone[] pArray = new Phone[n];
배열 선언까진 맞지않나요
이거 근데 맵을 안쓰고 배열로 한 이유가 있음?
잘은 모르겟지만 객체 배열 실습이라 그런듯요
아 빈칸 채우는 숙제였나보네
버퍼 문제 같은데 java scanner 버퍼 비우는거 검색해 보셈