본문 바로가기

AWS CLOUD FRAMEWORK/Java

[Day09] Ex03

package switch_case;

import java.util.Scanner;

public class Ex03 {
	public static void main(String[] args) {
		// 문자열 데이터 CRUD
		// 데이터의 입력과 출력은 항상 main에서만 진행한다
		Scanner sc = new Scanner(System.in);
		int menu, result;
		String data, replace;
		
		// 1) 여러 데이터를 저장할 구조를 만들어둔다 (배열)
		String[] arr = new String[5];
		
		// 2) while, switch~case 를 활용하여 메뉴 반복 구조를 만든다
		while(true) {
			System.out.println("1. 추가");	// Create
			System.out.println("2. 목록");	// Read
			System.out.println("3. 수정");	// Update
			System.out.println("4. 삭제");	// Delete
			System.out.println("0. 종료");
			System.out.print("선택 >>> ");
			menu = Integer.parseInt(sc.nextLine());
			switch(menu) {
			
			case 1:	// 추가
				System.out.print("추가할 데이터를 입력 : ");
				data = sc.nextLine();
				result = insert(arr, data);	// arr에 data를 추가하겠다
				System.out.println(result == 1 ? "추가 성공" : "추가 실패");
				break;
				
			case 2:	// 목록
				for(int i = 0; i < arr.length; i++) {
					if(arr[i] != null) {
						System.out.println(arr[i]);
					}
				}
				System.out.println("목록 출력 완료");
				break;
				
			case 3:	// 수정
				System.out.print("수정할 데이터의 이름 입력 : ");
				data = sc.nextLine();
				System.out.print("변경할 내용 입력 : ");
				replace = sc.nextLine();
				result = update(arr, data, replace);
				System.out.println(result == 1 ? "수정 성공" : "수정 실패");
				break;
				
			case 4:	// 삭제
				System.out.print("삭제할 데이터 입력 : ");
				data = sc.nextLine();
				result = delete(arr, data);	// 배열에서 지정한 데이터를 삭제한다
				System.out.println(result == 1? "삭제 성공" : "삭제 실패");
				break;
			
			case 0:
				sc.close();
				return;	// main 함수의 return (종료)
			}
			System.out.println();// 각 메뉴를 실행한 후 한줄 공백을 둔다
			
		}	// end of while
		
	}	// end of main
	
	static int insert(String[] arr, String data) {
		// 배열의 멤버요소는 초기값이 null로 설정되어 있다
		for(int i = 0; i < arr.length; i++) {	// 전체 배열에서
			if(arr[i] == null) {				// 빈칸이 있으면
				arr[i] = data;					// 빈칸에 데이터를 저장하고
				return 1;						// 1을 반환한다 (성공)
			}
		}
		return 0;	// 빈칸이 없다면 데이터를 추가하지 못하고 0을 반환한다 (실패)
	}
	
	static int update(String[] arr, String data, String replace) {
		int row = 0;
		for(int i = 0; i < arr.length; i++) {	// 전체 배열에서
			if(data.equals(arr[i])) {			// 일치하는 데이터가 있으면
				arr[i] = replace;				// 새로운 데이터로 바꿔주고
				row = 1;						// 반환할 값을 1로 설정(성공)
				break;							// 반복 중단
			}
		}
		return row;	// 반환 (if가 실행되었다면 1일테고, 아니라면 초기값 0으로 반환됨)
	}
	
	static int delete(String[] arr, String data) {
		// 값을 제거하려면 null을 대입하면 된다
		int row = 0;
		for(int i = 0; i < arr.length; i++) {			// 전체 배열에서
			if(arr[i] != null && arr[i].equals(data)) {	// 빈칸이 아닌곳 중에 일치하는 데이터를
				arr[i] = null;							// 삭제하고
				row = 1;								// 반환값 준비시켜주고
				break;									// 반복을 중단한다
			}
		}
		return row;	// if가 실행되었다면 1, 아니면 0을 반환한다
	}
	
}	// end of class

'AWS CLOUD FRAMEWORK > Java' 카테고리의 다른 글

[Day09] Main_java  (0) 2023.04.05
[Day09] Ex04  (0) 2023.04.05
[Day09] Ex02  (0) 2023.04.05
[Day09] Ex01  (0) 2023.04.05
[Day08] Ex07  (0) 2023.04.05