Java - 배열

wlsdnboy·2022년 2월 24일
0

배열

자료구조 에서 배열을 배웠습니다.
이제 좀 더 활용 해보겠습니다
아래 링크를 참고해 주세요.

https://velog.io/@jinwoo2025/CS-%EC%9E%90%EB%A3%8C-%EA%B5%AC%EC%A1%B01

  • 배열로 이름과,생일,번호를 입력하고 검색하거나 삭제하는 코드

// Menu.class
public class Menu {
      
	
	static void Menu() {  
		System.out.println("데이터입력");
        System.out.println("데이터검색");
        System.out.println("데이터삭제");
        System.out.println("프로그램 종료");
	}
	
	
}


static을 사용하면서 다른 클래스에서도 메소드를 사용할 수 있게 한다 메뉴선택을 반복해서 물어보기 때문에 메소드로 간략하게 한다.

//PhoneInfo Class


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


  • 데이터 클래스 이다, 데이터를 출력해 주는 역할을 한다.
//PhoneBookManager class

public class PhoneBookManager {

	final int MAX = 100; //배열의 크기를 설정해 주었다

	PhoneInfo[] info = new PhoneInfo[MAX];
	int cnt = 0; // 인덱스 번호를 설정해 주었다

	void read(String name, String number, String birth) {

		info[cnt] = new PhoneInfo(name, number, birth);
		cnt++;
        
        
	}// 배열에 데이터를 추가 해주는 메소드 이다.
	
	void search(String name) {
		for (int i = 0; i < cnt; i++) {
			if(info[i].name.equals(name)) {
				info[i].showPhoneInfo();
			}
		}
	}// 배열에 데이터를 검색 해주는 메소드 이다.
	
	void deleteData(String name) {
		for (int i = 0; i < cnt; i++) {
			if(info[i].name.equals(name)) { // 배열의 이름과 입력한 이름의 값이 같은지 확인후 null값을 넣어 삭제시킨다
				info[i] = null;
				cnt--;
				info[i] = info[i+1]; // 인덱스 앞의 값을 null값이 된곳에 넣어서 땡긴다
			}
			
		}// 배열에서 데이터를 삭제 시켜주는 메소드 이다.
	
		
	}

}

//PhoneBook Class

import java.util.Scanner;

public class PhoneBook {
	public static void main(String[] args) {
		PhoneBookManager pbm = new PhoneBookManager();
		
		Scanner sc = new Scanner(System.in);

		while (true) {
			Menu.Menu();
			int x = sc.nextInt();
			if (x == 1) {
				System.out.println("이름");
				String name = sc.next();
				System.out.println("전화번호");
				String number = sc.next();
				System.out.println("생년월일");
				String birth = sc.next();
				
				PhoneInfo ph = new PhoneInfo(name, number, birth);
				pbm.read(name, number, birth);
				
				ph.showPhoneInfo();
						
			}
			else if(x == 2) {
				System.out.println("이름을 입력하세요");
				String name = sc.next();
				pbm.search(name);
			}
			else if(x == 3) {
				System.out.println("이름을 입력하세요");
				String name = sc.next();
				pbm.deleteData(name);
			}
			else if(x == 4) {
				System.out.println("프로그램을 종료 합니다");
				break;
			}
			
			
		}

	}
}
  • 다른 형식으로 코드를 작성해보자.


//Menu Class


public class Menu {
	static void showMenu(){
    	System.out.println("데이터 입력");
		System.out.println("데이터 검색");
		System.out.println("데이터 삭제");
		System.out.println("데이터 종료");
    }
}



//PhoneInfo Class

public class PhoneInfo {
	private String name;
    private String number;
    private String birthday;
    
    Public PhoneInfo(String name, String number, String birthday){
    	this.name = name;
        this.number = number;
        this.birthday = birthday;
       }
	
	public void showPhoneInfo() {
       System.out.println("name :" + this.name);
       System.out.println("number :" + this.number);
       System.out.println("birthday :" + this.birthday);
       
    }
 }


PhoneBookManaber.class 

import java.util.Scanner;

public class PhoneBookManager {
	final int MAX = 100;
	PhoneInfo[] info = new PhoneInfo[MAX];
	int cnt = 0;
	Scanner sc = new Scanner(System.in);

	void read() {

		System.out.print("이름");
		String name = sc.next();
		System.out.print("번호");
		String number = sc.next();
		System.out.print("생년월일");
		String birthday = sc.next();

		info[cnt] = new PhoneInfo(name, number, birthday);
		cnt++;

	}
	
	void searchData() {
		System.out.println("데이터 검색을 시작합니다");
		sc.nextLine();
		System.out.print("이름: ");
		String name = sc.next();
		int i = searchIndex(name);
		
		if (i != 200 ) {
			info[i].showPhoneInfo();
		}
		else {
			System.out.println("찾는 값이 없습니다");
		}
	}
	
	int searchIndex(String name) {
		int index = 200;
		for (int i = 0; i < cnt; i++) {
			if(name.equals(info[i].getName())) { //getter와 setter는 private 값을 가져올 수있다
				index = i;
			}
		}
		
		
		
		return index;
	}
	
	
	void deleteData() {
		System.out.println("데이터를 삭제합니다");
		sc.nextLine();
		System.out.print("이름 :");
		String name = sc.next();
		int i = searchIndex(name);
		if(i != 200) {
			arrSort(i);
			System.out.println(i + "번째 데이터가 삭제 되었습니다");
			cnt--;
		}
		else {
			System.out.println("찾는 값이 없습니다");
		}
	}
	
	void arrSort(int index) {
		for(int i = index ; i< cnt ; i++) {
			info[i] = info[i+1];
		}
		info[cnt] = null;
	}

}







import java.util.Scanner;

public class PhoneBook {
	public static void main(String[] args) {
		PhoneBookManager pbm = new PhoneBookManager();
		Scanner sc = new Scanner(System.in);
		
		
		while (true) {
			Menu.showMenu();
			int x= sc.nextInt();
			
			if(x==1) {
				
				pbm.read();
				
				
			}
			
			else if(x == 2) {
				pbm.searchData();
			}
			
			else if(x == 3) {
				pbm.deleteData();
			}
			else if(x == 4) {
				System.out.println("프로그램이 종료되었습니다");
				break;
			}
		}

	}
}

//
profile
초보 개발자

0개의 댓글