-
학습 목표
배열에 개념
배열 문법
배열 사용배열이란?
연관된 데이터를 모아서 통으로 관리하기 위해서 사용하는 데이터타입이다.
변수가 하나의 데이터를 저장하기 위한 것이라면 배열은 여러개의 데이터를 하나의 변수에 저장하기 위한 것이라고 할 수 있다.
배열 선언하기
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값으로 한다.