본문 바로가기
IT/Java

Java (메소드 호출_배열사용)

by hjshims 2021. 5. 31.

 

 

package P0528Phone;

import java.util.Scanner;
//클래스는 총 3개
class PhoneInfo { // 한사람의 데이터 정보 저장 위한 클래스
	/*데이터 필드 선언*/
	String name;
	String phone;
	String addr;

	public PhoneInfo(String name, String phone, String addr) {
		this.name = name;
		this.phone = phone;
		this.addr = addr;
	}
	public void showPhoneInfo() {
		System.out.println("name: " + name);
		System.out.println("phone: " + phone);
		System.out.println("addr: " + addr);
	}
}

class Manager { // 입력, 검색, 삭제, 출력을 하는 기능 클래스
	Scanner scan = new Scanner(System.in);
	int cnt = 0;
	PhoneInfo[] infoStorage = new PhoneInfo[100];	//100명까지 입력 가능
	
	public void insert() {	//1. 데이터입력
		System.out.println("입력을 시작합니다.");
		System.out.print("name: ");
		String name = scan.next();
		System.out.print("phone: ");
		String phone = scan.next();
		System.out.print("addr: ");
		String addr = scan.next();
		infoStorage[cnt++] = new PhoneInfo(name, phone, addr);
		System.out.println("입력이 완료되었습니다.");
		System.out.println("");
	}

	public void select() {	//2. 데이터선택
		System.out.println("데이터를 검색합니다...");
		System.out.print("검색할 name 입력>> ");
		String sname = scan.next();
		for(int i=0; i<cnt; i++) {
			if(sname.equals(infoStorage[i].name)) {
				infoStorage[i].showPhoneInfo();
			}
		}
		System.out.println();
	}

	public void delete() {	//3. 데이터삭제
		System.out.println("데이터를 삭제합니다...");
		System.out.print("삭제할 name 입력>> ");
		String sname = scan.next();
		for(int i=0; i<cnt; i++) {
			if(sname.equals(infoStorage[i].name)) {	//반복문 돌면서 입력한 이름값과 배열 안의 모든 이름 비교
				for(int j=i; j<cnt; j++) {
					infoStorage[j] = infoStorage[j+1];	
					//삭제할 이름 다음의 인덱스 요소를 삭제할 곳으로 한칸 당겨오기 
					//-> 그럼 삭제할 이름의 인덱스는 없어지고 다음의 인덱스 요소로 채워짐
				}
				cnt--;	//한칸 당겨와서 마지막 배열이 비어있을테니 없애주기
			}
		}
		System.out.println("데이터가 삭제되었습니다.");
		System.out.println();
	}
	public void dataPrint() {	//4. 데이터출력
		for(int i=0; i<cnt; i++) {
				infoStorage[i].showPhoneInfo();	
			}
		System.out.println();
	}
	public void menu() { // 메뉴출력 메소드
			System.out.println("선택하세요...");
			System.out.println("1. 데이터 입력");
			System.out.println("2. 데이터 검색");
			System.out.println("3. 데이터 삭제");
			System.out.println("4. 데이터 출력");
			System.out.println("5. 프로그램 종료");
			System.out.print("선택: ");
	}
}

public class PhoneBookEx { // main메소드를 포함한 실행 클래스

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		Manager m = new Manager();
		
		while(true) {
		m.menu();	//메뉴 출력
		int choice = scan.nextInt();
			if(choice==1) {
				m.insert();
			}
			else if(choice==2) {
				m.select();
			}
			else if(choice==3) {
				m.delete();
			}
			else if(choice==4) {
				m.dataPrint();
			}
			else if(choice==5) {
				System.out.println("프로그램 종료");
				break;
			}
		}
		
	}		
}

 

<출력결과>
<출력결과2>