본문 바로가기
혼자서 개발새발

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

by 휴일이 2022. 10. 5.

 

객체 배열만을 이용하여

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

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