혼자서 개발새발

JAVA) 객체 배열(ArrayList XXX)을 이용하여 등록,출력,검색,수정

휴일이 2022. 10. 5. 22:38

 

객체 배열만을 이용하여

등록, 출력, 검색, 수정이 가능하게 해보자!!!

ArrayList XXXXXXXX 아님 XXXXXXX

 

 

 

먼저 DTO(VO) 입력창

 

package vo;

public class address {
	private String name;
	private String tel;
	private String address;
	
	public address() {
		super();
	}
		
	public address(String name, String tel, String address) {
		super();
		this.name = name;
		this.tel = tel;
		this.address = address;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getTel() {
		return tel;
	}

	public void setTel(String tel) {
		this.tel = tel;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	@Override
	public String toString() { //객체 출력을 위해
		return "[ 이름 : " + name + ", 전화번호 : " + tel + ", 주소 : " + address + "]";
	}
	
	
}

 

DTO 클래스는 다 비슷비슷 한 거 같다

 

 

 

 

Service 클래스

 

package service;

import java.util.Scanner;

import vo.address;

public class AddressService {
	
	private address[] a = new address[10];
	private int index; //배열값을 추가할 변수
	private String name;
	private String tel;
	private String address;
	Scanner sc;
	
	public AddressService() {
		super(); //생성자의 첫줄은 무조건 super(), 여기서는 Object클래스를 가져오는 것
	}
	
	public void hello(Scanner sc) {
		boolean flag = true; //while문을 돌리기 위해
		int key = 0; //switch문을 위해
		while(flag) {
			System.out.println("1.등록 2.출력 3.검색 4.수정 5.종료");
			key = sc.nextInt();
			switch(key) {
			case 1: //등록
				addPerson(sc);
				break;
			case 2: //출력
				printAll(sc);
				break;
			case 3: //검색
				findPerson(sc);
				break;
			case 4: //수정
				findUpdate(sc);
				break;
			case 5: //종료
				System.out.println("종료합니다");
				flag = false;
				break;
			}
		}
		
	}
	
	public void addPerson(Scanner sc) { //추가
		System.out.print("이름 : ");
		name = sc.next();
		System.out.print("전화번호 : ");
		tel = sc.next();
		System.out.print("주소 : ");
		address = sc.next();
		
		address a = new address(name,tel,address); //입력받은 값을 객체에 넣고
		this.a[index] = a; //객체를 배열에 넣는다
		index++; //초기값은 0, 등록이 실행 될 때마다 1씩 늘어나게 한다
	}
	
	
	public void printAll(Scanner sc) { //출력
		for(int i=0;i<index;i++) { //index 수만큼 돌린다
			System.out.println(a[i]);
		}
	}
	
	public void findPerson(Scanner sc) {
		System.out.print("찾을 이름을 쓰세요 : ");
		name = sc.next();
		
		for(int i=0;i<index;i++) { //index(등록횟수)만큼 돌린다
			if(name.equals(a[i].getName())) {  //배열중에 name이 같은 객체가 있는지 확인
				System.out.println(a[i]); //있으면 출력
			}
		}
	}
	
	
	public void findUpdate(Scanner sc) { //수정
		System.out.print("찾을 이름을 쓰세요 : ");
		name = sc.next();
		
		for(int i=0;i<index;i++) { //index(등록횟수)만큼 돌린다
			if(name.equals(a[i].getName())) { //배열 중에 이름이 같은 객체가 있는지 확인
				System.out.print("수정할 전화번호 : ");
				tel = sc.next();
				System.out.print("수정할 주소 : ");
				address = sc.next();
				address a = new address(name,tel,address); //객체에 새 값을 집어 넣는다
				this.a[i] = a; //그 객체를 배열에 추가한다
			}
		}
	}
	
	
	
	
	
}

 

 

 

 

 

메인 실행 클래스

package test;

import java.util.Scanner;

import service.AddressService;

public class TestService {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		AddressService s = new AddressService();
		s.hello(sc);
	}

}

 

결과

 

간단하게 완료~

 

 

ArrayList로 구현해본 적이 있어서

객체 배열은 좀 쉬웠당...아닌가 이게 더 어려운가

먼가 안 막히고 쓕쓕 돼서 신기했음!!!

 

학원 테스트 과제(?)였는데

빨리 끝내고 선생님 설명하는 동안 다른 거 만들었다ㅋㅋㅋ

모로 가도 서울만 가면 되는 거 아니겠습니까?ㅎㅎ

728x90