ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 배열
    Java 2023. 2. 18. 15:56
    학습 목표

    배열에 개념
    배열 문법
    배열 사용

     

     

    배열이란?

    연관된 데이터를 모아서 통으로 관리하기 위해서 사용하는 데이터타입이다.

    변수가 하나의 데이터를 저장하기 위한 것이라면 배열은 여러개의 데이터를 하나의 변수에 저장하기 위한 것이라고 할 수 있다.

     

    배열 선언하기

    int[] arr1 = new int[6];
    int arr2 [] = new int[] {10,20,30};

     

    각 배열마다 값 정하기 (0부터 시작)

    int[] arr1 = new int[6];
    		arr1[0] = 1;
    		arr1[1] = 100;
    		arr1[2] = 50;
    		arr1[3] = 3;
    		arr1[4] = 20;
    		arr1[5] = 13;
    		
    int arr2 [] = new int[] {10,20,30};

     

    배열 초기화 하기

    int arr2 [] = new int[] {10,20,30};
    		int[] ids;
    		ids = new int[] {10,20,30};
    		System.out.println(ids[0]); 	// 10
    		System.out.println(ids[1]); 	// 20
    		System.out.println(ids[2]); 	// 30

     

    인덱스의 크기는 n-1개이다.
    배열의 길이와 실제 들어가있는 값의갯수는 다를 수 있다.

     

    배열을 이용해 스타크래프트 게이트웨이를 만들어보자

     

    package Starcraft3;
    
    public class GateWay {
    
    	private String name;
    	
    	public GateWay() {
    		this.name = "게이트웨이";
    	}
    	
    	// 배열 -> 자료구조
    	// 질럿 생산하기
    	public Zealot[] createZealot(int count) {
    		//배열 선언
    		Zealot[] arr = new Zealot[count];
    		System.out.println("질럿을 생산합니다.");
    		// index값 0부터 시작
    		for (int i = 0; i < count; i++) {
    			arr[i] = new Zealot("질럿1");
    		}
    		return arr;
    	}
    //	
    }// end of class

     

    package Starcraft3;
    
    public class GateWayMainTest {
    
    	// 메인 함수
    	public static void main(String[] args) {
    
    		GateWay gateWay1 = new GateWay();
    		Zealot[] zealots = gateWay1.createZealot(3);
    		System.out.println(zealots[0]);
    		System.out.println(zealots[1]);
    		System.out.println(zealots[2]);
    		
    
    	}// end of main
    
    }// end of class
    출력값

    질럿을 생산합니다.
    Starcraft3.Zealot@2133c8f8
    Starcraft3.Zealot@43a25848
    Starcraft3.Zealot@3ac3fd8b

     

     

     

     

    도서 관리 프로그램

     

    package ch09;
    //import 잘못 연결됐을때 컨트롤 + 쉬프트 + o
    public class Book {
    
    	private int totalPage;
    	private String title;
    	private String author;
    	
    	public Book(String title,String author) {
    		this.title = title;
    		this.author = author;
    	}
    	
    	public Book(int totalPage, String title,String author) {
    		this(title,author);
    		this.totalPage = totalPage;
    	}
    	public Book() {
    		
    	}
    	
    	public int getTotalPage() {
    		//누가봐도 멤버변수라고 보이면 this를 안써도 된다.
    		return this.totalPage;
    	}
    
    	public String getTitle() {
    		return this.title;
    	}
    	public String getAuthor() {
    		return this.author;
    	}
    	
    	public void ShowInfo() {
    		System.out.println(">>>책정보<<<");
    		System.out.println("제목 : "+title);
    		System.out.println("저자 : "+author);
    	}
    
    }
    package ch09;
    
    public class BookMainTest1 {
    
    	public static void main(String[] args) {
    		//연관된 데이터를 통으로 관리 하고 싶다면 - 배열 (자료구조)
    				//객체배열은 주소값이 할당된다.
    				
    				Book[] books = new Book[10];	//배열 선언 (메모리공간 만들어두기)
    				books[0] = new Book("플러터UI실전","김근호");
    				books[1] = new Book("무궁화꽃이피었습니다.","김진명");
    				books[2] = new Book("흐르는강물처럼","파울로코엘료");
    				books[3] = new Book("리딩으로리드하라","이지성");
    				books[4] = new Book("사피엔스","유발하라리");
    				books[9] = new Book("홍길동전","허균");
    				//break문으로 했으면 도중에 멈춰 9가 출력이 안될 수 있다.
    
    				System.out.println(books[0].getTitle());
    				System.out.println(books[4].getAuthor());
    				
    				System.out.println("====================");
    				
    				//books.length : 배열의 길이(10)
    				for (int i = 0; i < books.length; i++ ) {
    					// i--> 0,1,2,3,4
    					if(books[i] != null) {	//방어적 코드 작성
    						System.out.println(books[i].getTitle());
    					}else {
    						break;
    					}	
    				}
    
    		} //end of main
    }	//end of class
    출력값
    플러터UI실전
    유발하라리
    ====================
    플러터UI실전
    무궁화꽃이피었습니다.
    흐르는강물처럼
    리딩으로리드하라
    사피엔스
    배열에 값을 주고 저장한 값을 출력하는 도서 프로그램이다.

     

     

    package ch09;
    
    import java.util.Scanner;
    
    public class MyBookStore  {
    	public static void main(String[] args) {
    
    		Scanner scanner = new Scanner(System.in);
    		// 배열의 길이 지정
    		Book[] books = new Book[100];
    		boolean flag = true;
    		int lastIndexNumber = 5;
    
    		final String SAVE = "1";
    		final String SEARCH_ALL = "2";
    		final String SEARCH_BY_TITLE = "3";
    		final String DELETE_ALL = "4";
    		final String END = "0";
    
    		// to do 추후 삭제 예정
    		// 임시 데이터
    		books[0] = new Book("플러터UI실전", "김근호");
    		books[1] = new Book("무궁화 꽃이 피었습니다", "김진명");
    		books[2] = new Book("흐르는 강물처럼", "파울로코엘료");
    		books[3] = new Book("리딩으로 리드하라", "이지성");
    		books[4] = new Book("사피엔스", "유발하라리");
    
    		// 실행 흐름 만들어보기
    		while (flag) {
    			System.out.println("**메뉴선택**");
    			System.out.println("1.저장 2.전체조회 3.선택조회 4.전체삭제 0.종료");
    			String selectedNumber = scanner.nextLine();
    			if (selectedNumber.equals(SAVE)) {
    				//저장
    				lastIndexNumber = save(scanner, books, lastIndexNumber);
    			} else if (selectedNumber.equals(SEARCH_ALL)) {
    				//전체 조회
    				readAll(books);
    			} else if (selectedNumber.equals(SEARCH_BY_TITLE)) {
    				//선택조회
    				readByTitle(scanner, books);
    			} else if (selectedNumber.equals(DELETE_ALL)) {
    				//전체 삭제
    				deleteAll(books);
    			} else if (selectedNumber.equals(END)) {
    				//종료
    				System.out.println(">종료하기<");
    				flag = false;
    			} else {
    				System.out.println("잘못된 입력 값 입니다.\n다시 선택바람");
    			}
    		}
    	}
    
    	// 저장하기 기능
    	public static int save(Scanner scanner, Book[] books, int lastIndexNumber) {
    		System.out.println(">>저장하기<<");
    		System.out.println("책 제목을 입력하세요\n");
    		String bookTitle = scanner.nextLine();
    		System.out.println("저자 이름을 입력하세요\n");
    		String bookAuthor = scanner.nextLine();
    		
    		books [lastIndexNumber] = new Book(bookTitle, bookAuthor);
    		lastIndexNumber++;
    		System.out.println(bookTitle + " 책을 저장했습니다!");
    		return lastIndexNumber;
    	}
    
    	// 전체 조회하기 기능
    	public static void readAll(Book[] books) {
    		System.out.println(">>전체조회하기<<");
    		for (int i = 0; i < books.length; i++) {
    			//타이틀,이름
    			if (books[i] != null) {
    				System.out.println(books[i].getTitle() + "," + books[i].getAuthor());
    			}
    		}
    		System.out.println();
    	}
    
    	// 선택 조회하기 기능
    	public static void readByTitle(Scanner scanner, Book[] books) {
    		System.out.println(">>선택조회하기<<");
    		System.out.println(">>책 제목을 입력해주세요<<");
    		String bookTitle = scanner.nextLine();
    		
    		boolean isFined = false;
    		for (int i = 0; i < books.length; i++) {
    			// 타이틀, 이름
    			if (books[i] != null) {
    				if (books[i].getTitle().equals(bookTitle)) {
    					// 찾았다.
    					System.out.println(books[i].getTitle() + "," + books[i].getAuthor());
    					isFined = true;
    					break;
    				}
    			}
    		}
    		if (isFined == false) {
    			System.out.println("아쉽지만 없는 책입니다.");
    		}
    	}
    
    	// 전체 삭제하기 기능
    	public static void deleteAll(Book[] books) {
    		System.out.println(">>전체삭제하기<<");
    		for (int i = 0; i < books.length; i++) {
    			//타이틀 , 이름
    			if (books[i] != null) {
    				books[i] = null;
    			}
    		}
    	}
    	
    }
    출력값
    
    **메뉴선택**
    1.저장 2.전체조회 3.선택조회 4.전체삭제 0.종료
    1
    >>저장하기<<
    책 제목을 입력하세요
    
    홍길동전
    저자 이름을 입력하세요
    
    길동
    홍길동전 책을 저장했습니다!
    **메뉴선택**
    1.저장 2.전체조회 3.선택조회 4.전체삭제 0.종료
    2
    >>전체조회하기<<
    플러터UI실전,김근호
    무궁화 꽃이 피었습니다,김진명
    흐르는 강물처럼,파울로코엘료
    리딩으로 리드하라,이지성
    사피엔스,유발하라리
    홍길동전,길동
    
    **메뉴선택**
    1.저장 2.전체조회 3.선택조회 4.전체삭제 0.종료
    3
    >>선택조회하기<<
    >>책 제목을 입력해주세요<<
    홍길동전
    홍길동전,길동
    **메뉴선택**
    1.저장 2.전체조회 3.선택조회 4.전체삭제 0.종료
    4
    >>전체삭제하기<<
    **메뉴선택**
    1.저장 2.전체조회 3.선택조회 4.전체삭제 0.종료
    2
    >>전체조회하기<<
    
    **메뉴선택**
    1.저장 2.전체조회 3.선택조회 4.전체삭제 0.종료
    0
    >종료하기<
    저장,전체조회,선택조회,전체삭제,종료 기능이 있는 도서 프로그램이다.

    1. 배열에 값을 입력을 받아 저장해주고 다른 배열에도 저장할수 있도록 ++을 넣어주며 return을 선언했다.
    2. 배열의 값이 null이 아니면 모두 나온다.
    3. 선택 조회하기 위해 첵제목을 입력받은 값을 변수에 넣고 전체 책을 조회하는데 거기에서 null값이 아니고 만약 입력한 책 제목과 저장한게 같으면 찾는다. 아니면 "아쉽지만 없는 책입니다" 라고 뜬다.
    4.. book[i]값이 null값이 아니면 null값으로 한다.

     

    'Java' 카테고리의 다른 글

    다형성  (0) 2023.02.18
    상속  (1) 2023.02.18
    static  (0) 2023.02.13
    this  (0) 2023.02.13
    접근 제어 지시자  (0) 2023.02.13
Designed by Tistory.