자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr
배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9,,s99; 2
배열의개념 배열 (array): 동일한타입의변수들의모임 3
배열을만드는절차 먼저배열참조변수부터선언 배열을 new 연산자를사용하여서생성 4
배열의인덱스 다음과같은배열을가정하자. 배열요소에는번호가붙어있는데이것을인덱스 (index) 라고부른다. 첫번째요소의번호는 0 이고, 마지막요소의번호는 9 가된다. 5
인덱스를통한요소의접근 배열은변수들이모인것이니, 배열을이루고있는배열요소는하나의변수 로생각하면된다. 배열의첫번째요소에 80 을저장하려면다음과같이한다. 6
예제 : 반복문과배열 크기가 10 인정수형배열을생성하고여기에 0 부터 9 까지의값으로배열을채우는프로그램을살펴보자. public class ArrayTest1 { public static void main(string[] args) { int[] s = new int[10]; for (int i = 0; i < 10; i++) { } s[i] = i; } } for (int i = 0; i < 10; i++) { } System.out.print(s[i] + " "); 0 1 2 3 4 5 6 7 8 9 7
LAB: 성적평균계산하기 8
SOLUTION import java.util.scanner; public class ArrayTest2 { public static void main(string[] args) { final int STUDENTS = 5; int total = 0; Scanner scan = new Scanner(System.in); int[] scores = new int[students]; for (int i = 0; i < STUDENTS; i++) { System.out.print(" 성적을입력하시오 :"); scores[i] = scan.nextint(); } for (int i = 0; i < STUDENTS; i++) total += scores[i]; System.out.println(" 평균성적은 " + total / STUDENTS + " 입니다 "); } } 9
배열의인덱스범위 프로그래머가인덱스가범위를벗어나지않았는지를확인하고책임을져야 한다. 10
배열의초기화 11
LAB: 문자열배열 12
SOLUTION public class PizzaTopping { public static void main(string[] args) { String[] toppings = { "Pepperoni", "Mushrooms", "Onions", "Sausage", "Bacon" }; } } for (int i = 0; i < toppings.length; i++) { } System.out.print(toppings[i] + " "); 13
LAB: 최대값과최소값구하기 인터넷에서특정한상품 ( 예를들어서 TV) 을구입하고자한다. 인터넷에서판 매되는가격이 1 차원배열 prices[] 에저장되어있다고가정했을때, 어떻게 하면최소가격으로상품을구입할수있을까? 14
LAB: 최소값알고리즘 최소값을구할때는일단배열의첫번째요소를최소값으로가정 15
SOLUTION public class GetMin { public static void main(string[] args) { int s[] = { 12, 3, 19, 6, 18, 8, 12, 4, 1, 19 }; int minimum; minimum = s[0]; for (int i = 1; i < s.length; i++) { if (s[i] < minimum) minimum = s[i]; } } } System.out.print(" 최소값은 " + minimum); 16
LAB: 특정한값찾기 순차탐색 (sequential search) 은탐색방법중에서가장간단하고직접적인 탐색방법이다. 순차탐색은배열의원소를순서대로하나씩꺼내서탐색키 와비교하여원하는값을찾아가는방법이다. 17
LAB: 순차탐색알고리즘 배열의원소를순서대로하나씩꺼내서탐색키와비교하여원하는값을찾 아가는방법 18
SOLUTION import java.util.scanner; public class SeqSearch { public static void main(string[] args) { int s[] = { 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 }; int value, index = -1; Scanner scan = new Scanner(System.in); System.out.print(" 탐색할값을입력하시오 : "); value = scan.nextint(); for (int i = 0; i < s.length; i++) { if (s[i] == value) index = i; } if (index < s.length && index >= 0) System.out.println("" + value + " 값은 " + index + " 위치에있습니다."); } 19
LAB: 주사위던지기 20
SOLUTION public class RollDice { public static void main(string[] args) { final int SIZE = 6; int freq[] = new int[size]; for (int i = 0; i < 10000; i++) ++freq[(int) (Math.random() * SIZE)]; System.out.println("===================="); System.out.println(" 면 \t 빈도 "); System.out.println("===================="); } for (int i = 0; i < SIZE; i++) System.out.println("" + (i + 1) + "\t" + freq[i]); 21
LAB: 극장예약시스템 22
SOLUTION import java.util.scanner; public class TheaterReserve { public static void main(string args[]) { final int size = 10; int[] seats = new int[size]; while (true) { System.out.println("----------------------------"); for (int i = 0; i < size; i++) System.out.print(i+1 + " "); System.out.println("\n----------------------------"); for (int i = 0; i < size; i++) System.out.print(seats[i] + " "); System.out.println("\n----------------------------"); 23
SOLUTION } System.out.print(" 원하시는좌석번호를입력하세요 ( 종료는 -1): "); Scanner scan = new Scanner(System.in); int s = scan.nextint(); if (s == -1) break; if (seats[s-1] == 0) { seats[s-1] = 1; System.out.println(" 예약되었습니다."); } else { System.out.println(" 이미예약된자리입니다."); } 24
무명배열 자바에서는배열의이름을지정하지않고단순히초기값만으로배열을생성시킬수있다. 무명배열 (anonymous arrays) 은즉시배열을만들어서함수의인수로전달하고자할때많이사용된다. 25
무명배열의예 26
for-each 루프 향상된루프구조 27
for-each 루프의예 28
배열의복사 배열참조변수의복사 29
배열의복사 한배열의모든값을다른배열로복사하고싶다면 Arrays 클래스의 copyof() 메소드를사용 ( 예 ) int [] list_copy = Arrays.copyOf(list, list.length); 30
main() 매개변수 31
명령어프롬프트 32
배열정렬 배열에저장된숫자를크기순으로정렬하려면 Arrays.sort() 사용 33
배열정렬 34
배열정렬 35
2 차원배열 36
2 차원배열의초기화 37
2 차원배열예제 38