130
4장. 장장장 장장 장장 II : 장장, 장장, 장장 1 public class SumTest { public static void main(String a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 장 장장 장장장 장장장장장 System.out.println(" 장장장 장장 " + sum + " 장장장 "); } } JAVA

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

Embed Size (px)

DESCRIPTION

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역. Java. public class SumTest { public static void main(String a1[]) { int a, b, sum; a = Integer.parseInt (a1[0]); b = Integer.parseInt (a1[1]); sum = a + b ; // 두 수를 더하는 부분입니다 - PowerPoint PPT Presentation

Citation preview

Page 1: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4장. 자바의 기본 구조 II :선택, 반복 , 배역

1

public class SumTest { public static void main(String a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두 수를 더하는 부분입니다 System.out.println(" 두수의 합은 " + sum + " 입니다 "); }}

JAVA

Page 2: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

프로그램의 논리 구조인 선택과 반복 논리에 대해 학습한다 .

가장 많이 사용되는 if 문의 종류와 사용방법에 관해 학습하고 , 다중 선택이 가능한 switch 문에 대해서도 학습한다 .

반복 논리를 제공하는 while 문 , do-while 문 , for 문에 대해 구조와 사용방법을 학습한다 .

선택문이나 반복문 내에서 제어를 이동시키기 위한 break, continue, re-turn 문의 사용방법에 관해 학습한다 .

배열의 생성과 사용방법에 관해 학습한다 .

학습목표

2

Page 3: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

section 1 선택문 - 1-1 if 문

- 1-2 switch 문

section 2 반복문 - 2-1 while 문

- 2-2 do-while 문

- 2-3 for 문

- 2-4 반복문의 비교와 중첩

section 3 제어의 이동 - 3-1 break 문

- 3-2 continue 문

- 3-3 return 문

목차

3

Page 4: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

section 4 배열 - 4-1 배열의 선언과 생성

- 4-2 배열의 초기화 및 사용

목차

4

Page 5: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

5

자바 언어는 선택 논리를 대표하는 구문으로서 다양한 형태의 if 문을 제공

단순 if 문 (if)- 조건에 따라 단순히 한 단위의 특정 작업을 수행해야 하는 경우 사용

96 page

Page 6: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

6

단순 if 문 (if)

if ( num < 0 ) System.out.println(" 음수입니다 "); 문장이 한 문장일 경우 “ { }”로 묶지 않아도 된다 . 

if ( (num > 0) && (num % 2 == 0) ){ System.out.println(" 양수입니다 "); System.out.println(" 짝수입니다 ");}

문장이 한 문장보다 많으면 반드시 “ { }”로 묶는다 . 

Page 7: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

7

실습예제- 다음 프로그램은 입력된 값이 음수일 경우에만 메시지를 출력하는 프로그램이다 . 조건절이

참일 경우에 수행할 문장이 한 문장일 경우에는 “ {}” 를 사용하지 않아도 된다 .

SimpleIFTest1.java0102030405060708

public class SimpleIFTest1 { public static void main(String args[]) { int count = Integer.parseInt(args[0]); if (count < 0) System.out.println(count + " 은 ( 는 ) 음수입니다 "); }}

입력된 값이 0보다 작은지 검사조건이 참일 경우에만 수행

Page 8: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

8

프로그램 설명- 00 :  프로그램 실행 시 입력되는 매개변수는 무조건 String( 문자열 )  클래스의 객체 배열에

저장된다 .  매개변수 순서에 따라 배열에 입력된다 . - 04 :  실행 시 입력받은 문자열 매개변수를 정수로 바꾸기 위해 사용하는 클래스 메소드이다 . 

클래스 메소드에 대해서는 2 부에서 자세하게 설명한다 .  여기서는 단순히 문자열배열의 한 항목을 정수로 바꾸는 기능을 한다고 이해하면 된다 .

- 05 :  단순 if 문의 조건문으로 결과는 항상 참 또는 거짓이 된다 .- 06 :  조건절이 참일 경우 수행하는 문장이다 .  조건절이 거짓이 될 경우 이 프로그램은

아무런 출력 없이 프로그램이 종료된다 .

Page 9: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

9

Page 10: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

10

실습예제- 다음 프로그램은 성적을 입력받아 90 점 이상이면 “축하합니다 A 학점을 취득하셨습니다”

를 출력하는 프로그램이다 . 또한 입력점수와 상관없이 프로그램을 종료하기 전에 “감사합니다”를 출력하고 있다 .

SimpleIFTest1.java010203040506070809101112

public class SimpleIFTest2 { public static void main(String args[]) { int grade = Integer.parseInt(args[0]); if (grade >= 90) { System.out.println(" 축하합니다 "); System.out.println("A 학점을 취득하셨습니다 "); } System.out.println(" 감사합니다 "); }}

입력된 값이 90 이상인지 검사

조건과 상관없이 무조건 수행

조건이 참일경우에만 수행

Page 11: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

11

프로그램 설명- 05 :  입력된 점수가 90  이상 ( 크거나 같으면 ) 이면 참이 되는 조건절이다 .- 06~09 :  조건절이 참일 경우 수행하는 문장이다 .  조건의 결과에 따라 수행해야 하는

문장이 여러 문장일 경우에는 반드시 “ {}” 로 문장을 묶어주어야 한다 .- 10 :  조건절의 결과에 상관없이 수행되는 문장이다 .

Page 12: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

12

이중 if 문 (if-else)- 조건식의 결과 ( 참 또는 거짓 ) 에 따라 특정 작업을 수행해야 하는 경우 사용

99 page

Page 13: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

if ( num % 2 == 0 ){ System.out.println(" 입력된 수 : " + num); System.out.println(" 짝수입니다 ");}else { System.out.println(" 입력된 수 : " + num); System.out.println(" 홀수입니다 ");}

1-1 if 문 1 선택문

13

이중 if 문 (if-else)if ( score >= 60 ) System.out.println(" 학점취득 성공 ");else System.out.println(" 학점취득 실패 ");System.out.println(" 학점취득여부와 상관없이 무조건 수행됨 ");

여러 문장일 경우 “ { }”로 묶는다 . 

선택문과 상관없는 문장

Page 14: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

14

실습예제- 성적을 입력받아 90 이상이면 “ A 학점 취득 성공”을 출력하고 아니면 “ A 학점 취득 실패”

를 출력하는 프로그램이다 . 또한 점수와 상관없이 항상 마지막에는 “감사합니다”를 출력한다 .

DoubleIFTest.java0102030405060708091011

public class DoubleIFTest { public static void main(String args[]) { int grade = Integer.parseInt(args[0]); if (grade >= 90) System.out.println("A 학점 취득 성공 "); else System.out.println("A 학점 취득 실패 "); System.out.println(" 감사합니다 "); }}

조건이 참일 경우 수행조건이 거짓일 경우 수행

조건과 상관없이 무조건 수행

Page 15: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

15

프로그램 설명- 06 : if 문에서 사용된 조건절이 참일 경우에 수행되는 문장이다 . - 08 : if 문에서 사용된 조건절이 거짓일 경우에 수행되는 문장이다 . - 09 : if 문에서 사용된 조건절과는 관계 없이 무조건 수행되는 문장이다 . 

Page 16: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

16

다중 if 문 (if-else if)- 조건이 거짓일 경우 다시 선택조건을 제시하여 조건의 결과에 따라 처리하며 , 결과가

거짓일 경우 다시 선택조건을 반복적으로 제시

101 page

Page 17: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

17

다중 if 문 (if-else if)

if ( score >= 90 ) System.out.println("A 학점취득 성공 ");else if ( score >= 80 ) System.out.println("B 학점취득 성공 ");else if ( score >= 70 ) System.out.println("C 학점취득 성공 ");else if ( score >= 60 ) System.out.println("D 학점취득 성공 ");else System.out.println(" 학점취득 실패 ");

Page 18: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

18

실습예제- 조건절의 결과가 거짓일 때 else if 절을 이용하여 다시 조건을 검사한다 . 마지막에 더 이상

비교할 조건이 없을 경우에는 else 절만 사용하여 기술한다 .MultiIFTest.java01020304050607080910111213141516

public class MultiIFTest { public static void main(String args[]) { int grade = Integer.parseInt(args[0]); if (grade >= 90) System.out.println("A 학점 취득 "); else if (grade >= 80) System.out.println("B 학점 취득 "); else if (grade >= 70) System.out.println("C 학점 취득 "); else if (grade >= 60) System.out.println("D 학점 취득 "); else System.out.println(" 학점 취득 실패 "); }}

다시 조건 검사다시 조건 검사다시 조건 검사모든 조건이 거짓일 때 수행

Page 19: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

19

프로그램 설명- 07 :  첫 번째 조건절의 결과가 거짓일 경우 다시 조건을 검사한다 . - 09 :  첫 번째 ,  두 번째 조건절의 결과가 거짓일 경우 다시 조건을 검사한다 . - 11 :  첫 번째 ,  두 번째 ,  세 번째 조건절의 결과가 거짓일 경우 다시 조건을 검사한다 . - 13 :  더 이상 조건이 없을 경우는 else  절로 기술한다 .  더 이상 조건을 필요로 하지 않을

경우 마지막에는 else  절을 이용하여 기술한다 .

Page 20: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

20

내포된 if 문- if 선택문 내에 또 다른 if 문이 내포

103 page

Page 21: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

이중 if 문 (if-else)

if (score >= 90) if (score >= 95) System.out.println("A+ 학점입니다 "); else System.out.println("A- 학점입니다 ");else if (score >= 60) if (score >= 80) System.out.println("B 학점입니다 "); else System.out.println("C 또는 D 학점입니다 "); else System.out.println(" 학점취득 실패 ");

1-1 if 문 1 선택문

21

if (score > 60) if(score > 70) if(score > 80) if(score > 90) System.out.println("A 학점 ");else System.out.println(" 학점취득실패 ");

내포된 관계에서  else는 가장 가까운 if의 else이다 . 내포된 관계의  if문을 사용할 때는 들여쓰기를 명확하게 하는 것이 좋다 . 

들여쓰기가 잘못된 예첫  if문의 else로 보이지만 마지막  if문의  else이다 . 

Page 22: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

22

실습예제- 프로그램 실행 시 성적을 입력받아 성적에 따라 해당 학점을 출력하는 프로그램을 내포된 if

문을 사용하여 작성하였다 . 학점을 A~B 는 우수학점군으로 C~D 는 보통학점군으로 분류하여 출력하도록 프로그램을 작성하였다 .

NestedIFTest.java01020304050607080910111213

public class NestedIFTest { public static void main(String args[]) { int score = Integer.parseInt(args[0]); if (score >= 80) { System.out.println(" 우수학점군에 속합니다 "); if (score >= 90) System.out.println("A 학점입니다 "); else System.out.println("B 학점입니다 "); } else

if ~ else절 if ~ else절

Page 23: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

23

실습예제NestedIFTest.java1415161718192021222324252627

{ if (score >= 60) { System.out.println(" 보통학점군에 속합니다 ") if (score >= 70) System.out.println("C 학점입니다 "); else System.out.println("D 학점입니다 "); } else System.out.println(" 학점취득 실패 "); } } }

if ~ else절 if ~ else절

Page 24: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-1 if 문 1 선택문

24

프로그램 설명- 08~11 : 05 번 문장의 if  조건절이 참인 경우에 수행되는 내포된 if-else  문이다 .  조건절의

결과에 따라 수행할 문장이 여러 개일 경우 반드시 “ {}” 로 묶어서 표현해야 한다 .- 15 : 13 번 else  문장 내에 포함된 if 문이다 .  내포된 if 문은 특정 형식을 가지지 않는다 . 

다양한 형태로 내포되어 사용될 수 있다 .

Page 25: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-2 switch 문1 선택문

25

자바에서는 다중 선택 기능을 제공하기 위해 switch 문을 제공

Switch 문- 수식 결과의 값에 따라 서로 다른 처리를 기술할 때 유용

- if-else-if 문을 사용하여 다중 선택을 기술할 수도 있지만 switch 는 간결한 구문으로 다중 선택의 기능을 제공

switch 문의 수행- 우선 정수식이 평가되고 평가된 값에 적합한 case 절이 수행

- Case 절의 정수 값은 반드시 상숫값 , 변수가 사용될 수 없음

- break 문을 만나면 switch 문을 빠져나감

- 평갓값에 맞는 case 문이 없을 경우에는 default 로 지정된 문장을 수행하고 case 문을 종료

Page 26: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-2 switch 문1 선택문

26

형식 : switch 문

107 page

Page 27: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-2 switch 문1 선택문

27

형식 : switch 문

swith (num){case 1 : System.out.println("num 의 값은 1 입니다 "); break;case 2 : System.out.println("num 의 값은 2 입니다 "); break;case 3 : System.out.println("num 의 값은 3 입니다 "); break;case 4 : System.out.println("num 의 값은 4 입니다 "); break;default : System.out.println("num 의 값은 1-4 사이의 값이 아닙니다 "); break;}

num의 값이 1~4 사이의 값이 아닐 경우 수행

Page 28: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-2 switch 문1 선택문

28

실습예제- 다음 프로그램은 사용자로부터 월을 입력받아 해당하는 계절을 출력하는 프로그램이다 .

case 절에서 처리할 내용이 없을 경우에는 그대로 비워둔다 .SwitchTest1.java010203040506070809101112131415

public class SwitchTest1 { public static void main(String args[]) { int month = Integer.parseInt(args[0]); String MtoS; switch (month) { case 12: case 1: case 2: MtoS = " 겨울입니다 ."; break; case 3: case 4: case 5:

case 절을 하나의 절로 묶어 수행

switch 절

Page 29: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-2 switch 문1 선택문

29

실습예제SwitchTest1.java161718192021222324252627282930313233

MtoS = " 봄입니다 ."; break; case 6: case 7: case 8: MtoS = " 여름입니다 ."; break; case 9: case 10: case 11: MtoS = " 가을입니다 ."; break; default: MtoS = "12 개월 이내의 달이 아닙니다 ."; } System.out.println(month + " 월은 " + MtoS ); }}

default  절

Page 30: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-2 switch 문1 선택문

30

프로그램 설명- 06 : switch  절의 정수식의 값에 따라 적합한 case  절을 수행한다 . - 08~12 : case  절의 값이 12,1,2 일 경우를 하나의 절로 묶어서 수행한다 . - 28~29 : default  절은 case  절에 하나도 해당하는 경우가 없을 경우 수행한다 . 

Page 31: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-2 switch 문1 선택문

31

실습예제- 다음 프로그램은 앞에서 switch 문으로 작성된 프로그램을 if-else-if 문을 사용하여 작성한

프로그램이다 . 사용자는 응용에 적합한 선택문을 사용하여 프로그램을 작성하여야 한다 .SwitchTest1.java010203040506070809101112131415161718

public class SwitchTestIF { public static void main(String args[]) { int month = Integer.parseInt(args[0]); String MtoS; if (month == 12 || month == 1 || month == 2) MtoS = " 겨울입니다 ."; else if (3 <= month && month <= 5) MtoS = " 봄입니다 ."; else if (6 <= month && month <= 8) MtoS = " 여름입니다 ."; else if (9 <= month && month <= 11) MtoS = " 가을입니다 ."; else MtoS = "12 개월 이내의 달이 아닙니다 ."; System.out.println(month + " 월은 " + MtoS ); }}

case 절에 해당하는  내용을   if문의조건절로  지정하였다 . 

switch문의 default 절을  if-else의 마지막  else로 지정하였다 . 

Page 32: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

1-2 switch 문1 선택문

32

Page 33: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2 반복문

33

반복 논리- 어떤 작업이 반복적으로 수행될 때를 표현하는 방법

- while, do-while, for 문을 제공

- 모든 반복문들은 조건식이 만족하는 동안 지정된 부분을 반복 수행

Page 34: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-1 while 문2 반복문

34

while 문- 특정 조건이 만족하는 동안 지정된 영역을 반복할 수 있는 기능

112 page

Page 35: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-1 while 문2 반복문

35

while 문int a = 10, b = 20;while(a > b) System.out.println(" 이 문장은 영원히 나타나지 않는다 ");

while ( number <= 100 ){ sum = sum + number; number = number + 1; System.out.println(number);}

boolean flag = true;while ( flag ){ System.out.println(" 이 부분은 영원히 반복된다 ");}

조건이 거짓이기 때문에 수행될 수 없다

무한 반복된다 . 

조건을 변화시키는 문장이 반복 부분에 포함되는 것이 일반적이다 . 

Page 36: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-1 while 문2 반복문

36

실습예제- 다음 프로그램은 1 부터 10 까지의 합을 구하는 프로그램이다 . 특정 변수의 값을 1 씩

증가시켜 합을 구하고 있다 .WhileTest1.java010203040506070809101112

public class WhileTest1 { public static void main(String args[]) { int hap=0, count=1; while (count <= 10) { hap = hap + count; count = count + 1; } System.out.println("1 부터 10 까지의 합은 "+ hap + " 입니다 "); }}

조건이 참인 동안 반복

Page 37: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-1 while 문2 반복문

37

프로그램 설명- 05 : count  값이 10 보다 작거나 같을 때까지를 반복 조건으로 제시하였다 .  이 조건이

참이면 반복 부분을 한 번 수행하고 다시 조건을 검사한다 .- 06~09 :  반복문의 조건이 참일 동안 수행되는 부분이다 .  반복문의 조건을 거짓으로 만들기

위해 count 의 값을 1 씩 증가시키고 있다 .  반복이 10 번 수행되면 count 의 값이 11 이 되어 반복문의 조건이 거짓이 되어 반복문이 종료된다 .

- 10 : while 문의 조건이 거짓이 되어 while 문을 벗어나면 수행된다 . 

Page 38: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-1 while 문2 반복문

38

실습예제- 다음 프로그램은 구구단 3 단을 출력하는 프로그램이다 .

WhileTest2.java010203040506070809101112

public class WhileTest2 { public static void main(String args[]) { int x = 3; int y = 1; while (y <= 9) { System.out.println(x + " * " + y + " = " + x * y); y++; } }}

while문

Page 39: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-1 while 문2 반복문

39

프로그램 설명- 06 : y  값이 9 보다 작거나 같을 때까지를 조건으로 지정한다 . - 09 : y  값을 증가시켜서 while 문의 조건을 거짓으로 만든다 .

Page 40: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-1 while 문2 반복문

40

실습예제- 다음 프로그램은 두 수의 중간 값을 구하는 프로그램이다 . 이 프로그램의 while 문은 반복

부분이 없는 프로그램이다 .WhileTest3.java 010203040506070809

public class WhileTest3 { public static void main(String args[]) { int i = 10; int j = 20; while (++i < --j); System.out.println("10 과 20 사이의 중간 값은 " + i + " 입니다 "); }}

반복 부분이 없는 while문

Page 41: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-1 while 문2 반복문

41

프로그램 설명- 00 : while 문의 조건식 내에 증감 연산자를 사용하였다 . while 문의 반복 부분이 존재하지

않기 때문에 라인 종료기호 (;) 를 while 문 끝에 추가하였다 . i  값과 j  값이 1 씩 증가 감소하면서 중간 값을 구하고 있다 .  정수의 중간 값을 구하는 프로그램이므로 짝수만을 사용하였다 .

Page 42: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-2 do-while 문2 반복문

42

do-while 문- 반복될 문장이 먼저 실행되고 조건이 검사되는 반복문

- 조건을 나중에 검사함으로서 반복될 문장이 최소 한 번은 실행

116 page

Page 43: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-2 do-while 문2 반복문

43

do-while 문

int a = 10, b = 20;do System.out.println("do-while 문은 반복 부분이 최소한 한번은 수행 된다 ");while (a > b)

do{ System.out.println("******* 메뉴 *******"); System.out.println("1. while 반복문 "); System.out.println("2. do-while 반복문 "); System.out.println("3. for 반복문 "); System.out.println(" 끝 : 100 입력 ");} while(input != 100)

처음 한 번은 무조건 수행

do while문은 메뉴를 나타낼 때 적합하다 .

Page 44: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-2 do-while 문2 반복문

44

실습예제- while 문에서도 예제로 작성해 보았던 1 부터 10 까지 더하는 프로그램을 do-while 문으로

작성해 보았다 .DoWhileTest1.java010203040506070809101112

public class DoWhileTest1 { public static void main(String args[]) { int hap=0, count=1; do { hap = hap + count; count = count + 1; } while (count <= 10); System.out.println("1 부터 10 까지의 합은 "+ hap + " 입니다 "); }}

do-while문의 조건절

do-while문 반복 부분

Page 45: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-2 do-while 문2 반복문

45

프로그램 설명- 05~08 : do-while 문에서 반복되는 문장이다 . - 09 : do-while 문의 조건절에 해당한다 . - 10 : do-while 문이 종료된 후에 수행되는 문장이다 . 

Page 46: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-2 do-while 문2 반복문

46

실습예제- 사용자로부터 입력된 값이 메뉴의 범위를 벗어나면 다시 메뉴를 보여주는 프로그램이다 .

DoWhileTest2.java010203040506070809101112131415

public class DoWhileTest2 { public static void main(String args[]) throws java.io.IOException { char choice; do { System.out.println("*** 반복문 종류 설명 ***"); System.out.println(" 1. while 반복문 "); System.out.println(" 2. do-while 반복문 "); System.out.println(" 3. for 반복문 "); System.out.print(" 원하는 번호를 입력하세요 : "); choice = (char)System.in.read(); System.out.println(); } while( choice < '1' || choice > '3');

switch(choice) {

메뉴를 나타내는프로그램

키보드 입력조건절

Page 47: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-2 do-while 문2 반복문

47

실습예제DoWhileTest2.java161718192021222324252627282930313233

case '1': System.out.println("****while 반복문 ****"); System.out.println(" 조건을 먼저 검사하고 조건이 참일 경우 반복 부분을 수행하는 반복문 "); break; case '2': System.out.println("****do-while 반복문 ****"); System.out.println(" 반복 부분을 먼저 수행하고 조건을 검사한다 . 최소한 한번은 수행되는 반복문 "); break; case '3': System.out.println("****for 반복문 ****"); System.out.println(" 지정된 횟수만큼 반복 부분을 수행하는 반복문 "); break; } }}

Page 48: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-2 do-while 문2 반복문

48

프로그램 설명- 02 :   이 프로그램은 실행 시 사용자로부터 입력을 받아들이는 프로그램이다 .  자바

프로그램에서 프로그램 실행 시에 사용자로부터 입력을 받아들이기 위해서는 System.in-.read() 를 수행하여 키보드로부터 입력을 받아들여야 한다 .  또한 입출력 시 발생할 수 있는 예외처리를 반드시 해주어야 한다 .  이 두 부분은 이 책의 해당 부분에서 상세하게 설명한다 . 

- 03 :  입력되는 값을 char 형의 데이터로 받아들이기 위한 변수를 선언한다 . - 05~09 :  메뉴를 나타내는 프로그램 부분이다 . - 10 :  사용자의 키보드로부터 하나의 문자를 받아들이기 위한 문장이다 . - 11 :  출력문을 매개변수 없이 사용하면 줄을 바꾸는 기능을 한다 . - 12 :   사용자로부터 입력된 문자가 ‘ 1’ 과 ‘ 3’ 사이의 숫자가 아니면 다시 메뉴를 나타낸다 . 

Page 49: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-2 do-while 문2 반복문

49

Page 50: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-2 do-while 문2 반복문

50

Page 51: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-2 do-while 문2 반복문

51

Page 52: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-3 for 문2 반복문

52

For 문- 지정된 횟수만큼 반복 수행하는 반복문

- 초기식 : 주로 반복 변수의 초기화를 위해 사용 . 초기식은 처음 한 번만 수행

- 조건식 : 조건을 나타내며 , 조건식이 참일 동안 반복 부분 수행

- 증감식 : 반복 부분을 수행한 후에 반드시 수행되는 문장 . 주로 조건식에 변화를 주는 수식으로 구성

Page 53: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-3 for 문2 반복문

53

For 문

121 page

Page 54: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-3 for 문2 반복문

54

For 문

121 page

Page 55: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-3 for 문2 반복문

55

For 문

int i, sum = 0;for ( i = 1 ; i <= 10 ; i = i + 1 ) sum = sum + i ;System.out.println("1 부터 " + i + " 까지의 합 = " + sum);

반복될 부분이 한 문장인 경우 “ { }”로 묶지 않아도 된다 . 

int sum = 0;for (int i = 1 ; i <= 10 ; i = i + 1 ) sum = sum + i ;System.out.println("1 부터 " + i + " 까지의 합 = " + sum);

int i, sum = 0;for ( i = 1 ; i <= 10 ; i = i + 1 ){ sum = sum + i ; System.out.println("1 부터 " + i + " 까지의 합 = " + sum); }

반복될 부분이 여러 문장일 경우반드시 “ { }”로 묶어야 한다 . 

for문 내에서 선언된 변수는  for문 내에서만 사용이 가능오류 발생

Page 56: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-3 for 문2 반복문

56

For 문int a, b;for ( a=1, b=10 ; a < b ; a++, b-- ){ System.out.println("a = " + a); System.out.println("b = " + b);}

초기식과 증감식에 두 개 이상의 문장을 콤마로 분리하여 사용할 수 있다 .

boolean flag = false;int i = 1;for ( ; ! flag ; ){ System.out.println(“i 의 값은 " + i + “ 입니다 "); System.out.println(“i 의 값은 " + i + “ 입니다 "); if ( i == 10 ) flag = true; i++;}

초기식과 증감식이 생략될 수 있다 . 

for ( ; ; ){ .............}

모두 생략될 수 있다 . 무한 반복을 수행한다 .

Page 57: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-3 for 문2 반복문

57

실습예제- while 문과 do-while 문에서 작성하였던 1 부터 10 까지의 합을 구하는 프로그램을 for

문을 사용하여 작성하였다 .

ForTest1.java0102030405060708091011

public class ForTest1 { public static void main(String args[]) { int i, sum=0; for (i = 1; i <= 10 ; i = i + 1) { sum = sum + i; } System.out.println("1 부터 10 까지의 합은 " + sum + " 입니다 "); }}

for문을 이용한 반복

Page 58: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-3 for 문2 반복문

58

프로그램 설명- 05 : for  구문에 반복의 초기식과 조건식 ,  증감식을 지정하였다 .- 06~08 :  반복 부분을 지정한다 .  반복 부분이 한 문장이라도 “ {}” 로 묶어 주는 것이

가독성에 좋다

Page 59: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-3 for 문2 반복문

59

실습예제- while 문과 do-while 문에서 작성하였던 1 부터 10 까지의 합을 구하는 프로그램을 for

문을 사용하여 작성하였다 .

ForTest2.java0102030405060708091011

public class ForTest2 { public static void main(String args[]) { int i, sum=0; for (i = 1; i <= 100 ; i = i + 2) { sum = sum + i; } System.out.println("1 부터 100 사이의 홀수의 합은 " + sum + " 입니다 "); }}

Page 60: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-3 for 문2 반복문

60

프로그램 설명- 05 :  홀수만 더하기 위해 i  값을 2 씩 증가시켰다 . 

Page 61: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-3 for 문2 반복문

61

실습예제- 사용자로부터 두 개의 숫자를 입력받아 최소공배수와 최대공약수를 구하는 프로그램이다 .

이 프로그램에서는 if 문 내에 break 문을 사용하였는데 , 이 문장은 자신을 둘러싸고 있는 반복문을 벗어나 다음 문장을 수행하는 역할을 한다 . break 문에 대해서는 3.1 절에서 설명한다 .

ForTest3.java0102030405060708091011

public class ForTest3 { public static void main(String args[]) { int n = Integer.parseInt(args[0]); int m = Integer.parseInt(args[1]); int i; for( i=1 ; i<=m*n ; i++) { if((i%n == 0) && (i%m == 0)) break; }

최소공배수를 구하기 위한  for문

Page 62: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-3 for 문2 반복문

62

실습예제

ForTest3.java121314151617181920212223

System.out.print(" 최소 공배수는 " + i + " 입니다 . "); for( i=n ; i>=1 ; i-- ) { if((m%i == 0) && (n%i == 0)) break; } if(i==1) System.out.print(" 최대 공약수가 없습니다 ."); else System.out.print(" 최대 공약수는 " + i + " 입니다 . "); }}

최대공약수를 구하기 위한  for문

Page 63: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-3 for 문2 반복문

63

프로그램 설명- 07 :  최소공배수를 구하기 위한 for  반복문이다 . - 09 : i  값을 두 개의 값으로 나누어 나머지가 0  이 되는 값을 구한다 .- 10 :  두 값의 나머지가 모두 0  이면 반복문을 벗어나 다음 문장을 수행한다 . - 13 :  최대공약수를 구하기 위한 for  반복문이다 . - 15 :  두 개의 값을 i(i=n 부터 시작 )  값으로 나누어 나머지가 0  이 되는 값을 구한다 .- 16 :  두 값의 나머지가 모두 0  이면 반복문을 벗어나 다음 문장을 수행한다 . 

Page 64: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-3 for 문2 반복문

64

Page 65: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-4 반복문의 비교와 중첩2 반복문

65

3 개의 반복문의 구조

126 page

Page 66: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-4 반복문의 비교와 중첩2 반복문

66

3 개의 반복문의 구조

For 문for ( j=1 ; j < 0 ; j++) System.out.println(" 한번도 수행안됨 )

수행결과 while 문 j=1;while( j < 0 ) System.out.println(" 한번도 수행안됨 )

수행결과do-while 문j=1;do { System.out.println(" 적어도 한번은 수행됨 );}while ( j < 0 ) 수행결과적어도 한번은 수행됨

조건을 먼저 검사함으로써 한 번도수행이 되지 않을 수 있다 .

Page 67: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-4 반복문의 비교와 중첩2 반복문

67

반복문의 내포된 형태

128 page

Page 68: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-4 반복문의 비교와 중첩2 반복문

68

실습예제- 구구단을 1 단부터 9 단까지 출력하는 프로그램을 3 가지 형태의 반복문으로 작성하였다 .

구구단을 출력하기 위해 내포된 반복문을 사용하였다 .NestedLoopForTest.java01020304050607080910111213

public class NestedLoopForTest { public static void main(String args[]) { int i,j; for ( i=2; i<=9 ; i=i+1 ) { System.out.println("*** " + i + " 단 ***"); for( j=1; j<=9; j=j+1 ) System.out.println(i+" * " + j + " = " + i*j); System.out.println(); } }}

바깥쪽  for문내포된  for문

Page 69: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-4 반복문의 비교와 중첩2 반복문

69

프로그램 설명- 05 :  단을 출력하기 위한 바깥쪽 for 문을 작성한다 . - 07 :  단의 제목을 출력한다 . - 08~09 :  각 단의 내용을 출력하기 위한 내포된 for 문

- 10 :  한 단을 출력하고 한 줄을 띤다 .- 05-10 :  두 개의 for 문이 내포된 형태이다 .  구구단을 출력하기 위해서 바깥쪽 for 문은 2

단부터 9 단까지를 반복하고 ,  내포된 for 문에서는 각 단별로 1 부터 9 까지의 곱셈 결과를 출력하고 있다 .  한 단이 끝나면 한 줄을 띠기 위해 빈 출력문 (System.out.println()) 을 사용하였다 .

Page 70: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-4 반복문의 비교와 중첩2 반복문

70

실습예제NestedLoopWhile.java010203040506070809101112131415161718

public class NestedLoopWhileTest{ public static void main(String args[]) { int i=2; while ( i<=9 ) { System.out.println("*** " + i + " 단 ***"); int j=1; while ( j<=9 ) { System.out.println(i+" * " + j + " = " + i*j); j++; } System.out.println(); i++; } }}

바깥쪽 while문내포된 while문

Page 71: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-4 반복문의 비교와 중첩2 반복문

71

프로그램 설명- 05 :  단을 출력하기 위한 바깥쪽 while 문을 작성한다 . - 08 :  안쪽 while 문의 조건을 제어하는 변숫값을 1 로 초기화한다 .  바깥쪽 반복문이 실행될

때마다 이 변숫값은 1 로 초기화된다 .  내포된 while 문이 반복되어 수행될 경우 조건절의 제어변수는 반드시 초기화되어야 한다 .  초기화되지 않으면 ,  내포된 while 문의 조건이 거짓이 되어 수행되지 않는다 .

- 09~13 :  각 단의 내용을 출력하기 위한 내포된 while 문 .  조건을 제어하는 변숫값 j 를 1씩 증가시키고 있다 .  내포된 while 문은 구구단의 각 단을 출력하게 된다 . 

- 14 :  한 단을 출력하고 한 줄을 띤다 .- 15 :  바깥쪽 while 문의 제어변숫값을 1  증가시킨다 .- 05~15 : while 문은 조건절만 기술한다 .  조건절을 거짓으로 만들기 위한 문장이 while 문

내에 없으면 ,  무한 반복된다 . 15 번 문장에서 j  값을 증가시킴으로서 9 단까지 출력한 다음 바깥쪽 while 문의 조건절이 거짓이 되어 프로그램이 종료된다 .

Page 72: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-4 반복문의 비교와 중첩2 반복문

72

실습예제NestedLoopDoWhileTest.java01020304050607080910111213141516

public class NestedLoopDoWhileTest{ public static void main(String args[]) { int i=2; do{ System.out.println("*** " + i + " 단 ***"); int j=1; do{ System.out.println(i+" * " + j + " = " + i*j); j++; }while ( j<=9 ); System.out.println(); i++; }while ( i<=9 ); } }

바깥쪽 do-while문내포된 do-while문

Page 73: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-4 반복문의 비교와 중첩2 반복문

73

프로그램 설명- 07 :  내포된 do-while 문의 조건절 제어 변숫값을 초기화한다 . - 13 : do-while 의 조건절을 거짓으로 만들기 위해 i  값을 1 증가한다 . - 08~11 :  각 단의 내용을 출력하기 위한 내포된 do-while 문이다 .  조건을 제어하는 변숫값

j 를 1 씩 증가시키고 있다 .- 05~14 :  단을 출력하기 위한 바깥쪽 do-while 문을 작성한다 .  조건을 나중에 검사한다는

것을 제외하고는 while 문으로 작성된 프로그램과 동일한 구조를 가진다 .

Page 74: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-4 반복문의 비교와 중첩2 반복문

74

Page 75: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-4 반복문의 비교와 중첩2 반복문

75

Page 76: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

2-4 반복문의 비교와 중첩2 반복문

76

Page 77: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

77

프로그램에서 제어를 이동시키기 위해 break, continue, return 문을 제공

break 문- 두 가지 형태로 사용이 가능

- switch 문이나 반복문을 벗어나는데 사용

- switch 문이나 반복문 내에서 break 문이 수행되면 실행을 중단하고 switch 문이나 반복문을 벗어나 다음의 첫 문장으로 제어가 이동

break; 형식

Page 78: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

78

break 문

switch ( a+b ){ case 1: System.out.println("......."); break; case 2 : System.out.println("......."); break; case 3 : System.out.println("......."); break; ...... default : .......... break;}

switch문 밖으로 이동

Page 79: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

79

break 문

while (true){ if ( 100 < j ) break; sum = sum+j; j++;}

while문 밖으로 이동

Page 80: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

80

실습예제- 1 부터 100 사이를 반복하는 반복문 내에 특정 조건을 가지는 선택문을 삽입하여 조건이

만족하면 반복문을 벗어나는 프로그램을 작성하였다 .

ForBreakTest.java0102030405060708091011

public class ForBreakTest { public static void main(String args[]) { for(int i=0; i<100; i++) { if(i == 5) break; System.out.println(i + " 자바의 세계로 오세요 ! " ); } System.out.println("break 문에 의하여 for 문이 중단되었습니다 ."); }}

for 반복문반복에서  i의 값이 5면 break문 수행

Page 81: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

81

프로그램 설명- 04 : 100 번을 반복하기 위한 for  반복문이다 . - 06 :  반복에서 i 의 값을 검사하여 그 값이 5 면 break 문을 수행한다 . break 문은 주로

반복문 내에서 특정 조건에 적합할 때 반복을 벗어나기 위해 사용한다 .- 09 : break 문 다음에 수행되는 문장이다 . 

Page 82: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

82

실습예제- while 문의 조건절을 true 로 설정한 다음 , 반복문 내에서 특정 조건을 검사하여 반복을

벗어나는 프로그램이다 .

WhileBreakTest.java01020304050607080910111213

public class WhileBreakTest { public static void main(String args[]) { int j=1, sum=0; while(true) { if(100 < j) break; sum = sum + j; j++; } System.out.println("1 부터 " + (j-1) + " 까지의 합 : " + sum); }}

무한 반복 while문j의 값이 100을 넘으면 break문 수행

Page 83: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

83

프로그램 설명- 05 : 100 번을 반복하기 위한 for  반복문이다 . - 07 :  반복에서 i 의 값을 검사하여 그 값이 5 면 break 문을 수행한다 . break 문은 주로

반복문 내에서 특정 조건에 적합할 때 반복을 벗어나기 위해 사용한다 .- 11 : break 문 다음에 수행되는 문장이다 . 

Page 84: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

84

실습예제- 반복문이 내포된 상태에서 break 문이 사용되면 , break 문을 포함하고 있는 반복문만

벗어난다 . 다음 프로그램은 내포된 for 문에서의 break 를 사용하는 예이다 .NestedForBreakTest.java010203040506070809101112131415

public class NestedForBreakTest { public static void main(String args[]) { int i, j; for(i=1 ; i<10 ; i++) { for(j=1 ; j<i ; j++) { if (j > 6) break; System.out.print(" * "); } System.out.println(); } }}

바깥쪽 반복문 선언 (9번 반복 )

내포된 반복문 선언j 값이  6 이상이면 내포된 반복문을 벗어남

Page 85: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

85

프로그램 설명- 05 :  바깥쪽 반복문을 선언한다 .  반복문은 9 번 반복된다 . - 07 :  내포된 반복문을 선언한다 . - 09 :  변수 j  값이 6  이상이면 내포된 반복문을 벗어나 12 번 문장을 수행한다 .  내포된

반복문 내에서 break 문이 사용되면 해당 반복문만 벗어난다 .- 10 : “*” 을 출력한다 .  출력 후 줄을 바꾸지 않는다 .- 12 :  바깥쪽 반복문의 반복 부분으로 줄을 바꾼다 .

Page 86: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

86

break label 문 - break 문과 label 을 이용하여 제어를 이동시킬 수 있는 방법을 제공

break label;형식

First : { .......... Second : { ............ Third : { if ( 5 < a ) break Second; System.out.println("Third 블록입니다 "); } System.out.println("Second 블록입니다 "); } System.out.println("First 블록입니다 "); }

Second문 밖으로 이동

Page 87: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

87

break label 문

First : { .......... Second : { if ( a > 5 ) break Third; System.out.println("Third 블록입니다 "); ............ System.out.println("Second 블록입니다 "); } System.out.println("First 블록입니다 "); }

Third : { ............... }

오류 발생reak는 내포된 블록 구조에서만 사용이 가능하다 . 

Page 88: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

88

break label 문

Loop : for( j=2 ; j <= 9 ; j++) { .................. InnerLoop : for ( k=1 ; k <= 9 ; k++) { ................ if ( k > 5 ) break InnerLoop; ............... } System.out.println("Loop 블록입니다 "); }

반복문 앞에  label을 사용하여 블록을지정할 수 있다 . 

Page 89: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

89

실습예제- 내포된 블록에서 일반 블록을 지정하여 블록을 벗어나는 예를 나타낸 프로그램이다 .

BreakLabelTest.java 010203040506070809101112131415161718

public class BreakLabelTest { public static void main(String args[]) { boolean t = true; First:{ Second:{ Third:{ System.out.println("Third 블록 'break' 문장 전 "); if(t) break Second; System.out.println("Third 블록 'break' 문장 후 "); } System.out.println("Second 블록 문장 "); } System.out.println("First 블록 문장 "); } System.out.println("main 블록 문장 "); } }

break Second문 수행Third 블록 선언 Second 블록 선언 First 블록 선언

Page 90: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

90

프로그램 설명- 09 : break Second 문을 수행하여 Second 블록 밖으로 제어가 이동된다 . - 05~15 : First 블록을 선언한다 . break label  문장은 반드시 내포된 블록에서만 가능하다 . 

label 로 지정된 블록 밖으로 제어가 이동된다 .- 06~13 : First 블록 안에 내포된 블록으로 Second 블록을 선언한다 . - 07~11 : Second 블록 안에 내포된 블록으로 Third 블록을 선언한다 . 

Page 91: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

91

실습예제- 두 개의 무한 반복문에서 break 문과 break label 문의 사용 예를 보이고 있다 .

BreakLabelTest2.java 01020304050607080910111213141516171819

public class BreakLabelTest2 { public static void main(String args[]) { int i=2, j; Loop : while(true) { j=1; Innerloop : while(true) { if ( j > 9 ) break; if ( i > 9 ) break Loop; System.out.println(i+” * " + j + " = " + i*j); j++; } System.out.println(); i++; } }}

Loop 블록 , 무한 반복Innerloop 블록으로 지정 ,무한 반복

Page 92: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

92

프로그램 설명- 10 : j  값이 9 보다 크면 현재의 반복문을 벗어난다 .- 11 : i  값이 9 보다 크면 Loop 블록을 벗어나 프로그램이 종료된다 . - 05~17 : Loop 블록으로 지정된 무한 반복문을 선언한다 . - 08~14 : Innerloop 블록으로 지정된 무한 반복문으로서 Loop 블록에 내포되어 있다 . 

내포된 블록 (Innerloop) 에서 조건에 따라 블록을 벗어난다 .  변수 j 의 값이 9 보다 크면 자신의 블록을 벗어나고 ,  변수 i 의 값이 9 보다 크면 바깥의 Loop 블록을 벗어난다 .

Page 93: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-1 break 문3 제어의 이동

93

Page 94: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-2 continue 문3 제어의 이동

94

반복문의 특정 지점에서 제어를 반복문의 처음으로 보내기 위해 continue문을 사용

반복문 내에서 continue 문을 만나면 수행을 중지하고 제어를 반복문의 처음으로 이동

Page 95: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-2 continue 문3 제어의 이동

95

실습예제- 다음 프로그램은 반복문 내에서 continue 문을 사용하는 예이다 . 1-100 사이의 수 중에서

짝수만을 더하는 프로그램이다 . 현재의 수가 홀수일 경우에는 반복문의 처음으로 제어를 이동ContinueTest.java

010203040506070809101112

public class ContinueTest { public static void main(String args[]) { int sum=0, i; for( i=1; i<=100; i++ ) { if (i%2 == 1) continue; sum = sum + i; } System.out.println("1 부터 100 사이에 있는 짝수의 합은 : " + sum ); } }

짝수인 경우만 더한다 .

변수  i 값을 검사하여 홀수일 경우에는 제어를 반복문의 처음 (증감부분 )으로 이동한다 . 

Page 96: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-2 continue 문3 제어의 이동

96

실습예제- 내포된 for 문에서 label 을 이용하여 바깥의 for 문으로 제어를 이동하는 프로그램

ContinueTest.java010203040506070809101112131415

public class ContinueLabelTest { public static void main(String args[]) { int i,j; Outer : for ( i=2; i<=9 ; i=i+1 ) { System.out.println("*** " + i + " 단 ***"); for(j=1; j<=9; j=j+1) { if (j == 3) continue Outer; System.out.println(i+" * " + j + " = " + i*j); } } }}

반복문에 Outer 블록 선언

내포된 반복문 선언

Page 97: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-2 continue 문3 제어의 이동

97

프로그램 설명- 05 :  반복문에 Outer 블록을 선언한다 . - 08 :  내포된 반복문을 선언한다 . - 10 :  내포된 반복문에서 바깥쪽 반복문의 처음으로 제어를 이동시킨다 .  이를 위해 바깥쪽

반복문을 Outer 블록으로 지정하였고 , continue 문에서 label 로 Outer 를 지정하였다 .

Page 98: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-3 return 문3 제어의 이동

98

Return 문- 현재 실행 중인 프로그램을 중단하고 , 현재 프로그램을 호출한 곳으로 제어를 반환한다 .

Page 99: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-3 return 문3 제어의 이동

99

실습예제- 무한 반복문 내에서 특정 조건에 적합하면 실행을 중단하고 프로그램의 제어를 호출한 곳으로 반환하는 프로그램이다 .

ReturnTest.java01020304050607080910111213141516

public class ReturnTest { public static void main(String args[]) { int j = 1; int k = Integer.parseInt(args[0]); while(true) { if (j % k == 0) { System.out.println(" 매개변수로 입력된 숫자 : " + j); return; } j++; } }}

Page 100: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

3-3 return 문3 제어의 이동

100

프로그램 설명- 08 :  매개변수로 입력된 값을 j  값으로 (1 씩 증가 ) 나누어 떨어지는 조건을 지정한다 . - 11 :  실행을 중지하고 제어를 호출한 곳으로 반환한다 .  이 프로그램에서는 종료를 의미한

다 . 

Page 101: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4 배열

101

배열- 같은 형의 데이터들을 다수 개 저장할 수 있는 기억장소를 의미

- 하나의 이름으로 다수 개의 데이터를 사용할 수 있음

- 학생 10 명 성적의 평균을 구하는 프로그램을 작성시 많은 변수를 사용하여 프로그램을 복잡하게 하여 오류를 발생시킬 수 있다 .

int cskim, tbpark, seoh, phkim, cmkim, sdkim, cslee, hjkim, kylee, dhlee;int avg;cskim=99;

...... 생략 ......

dhlee=85;avg = cskim + tbpark + .... 생략 .... + dhlee / 10;System.out.println(" 과목 평균 : " + avg);

Page 102: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4 배열

102

변수를 사용하는 경우와 배열을 사용하는 경우

145 page

Page 103: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-1 배열의 선언과 생성4 배열

103

배열의 선언- 배열 요소의 형 (type), 배열을 의미하는 대괄호 “ []”, 배열의 이름을 적절히 조합하여 사용

배열의 생성- new 연산자를 사용하여 배열의 형과 크기를 지정

형식 : 배열의 선언과 생성

type name[];type[] name;type[][] name;type name[][];type[] name[];

[ 배열의 선언 ]

name = new type[size];name = new type[size][size];

[ 배열의 생성 ]

배열 생성을 위해서new 연산자 사용new 연산자는객체 생성연산자이다 .(5장설명 )

Page 104: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-1 배열의 선언과 생성4 배열

104

형식 : 배열의 선언과 생성

type[] name = new type[size];type name[] = new type[size];type[][] name = new type[size][size];type name[][] = new type[size][size];type[] name[] = new type[size][size];

[ 배열의 선언과 생성 ]

int[] id;id = new int[3];또는int[] id = new int[3];

String[] student_name ;student_name = new String[3];또는String[] student_name = new String[3];

선언과 생성을 동시에 한 문장으로 할 수 있다 . 

3개의  int 요소 (기본 자료형 )를 가진 배열 생성

3개의 문자열 요소 (참조 자료형 )를 가진배열 생성

Page 105: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-1 배열의 선언과 생성4 배열

105

형식 : 배열의 선언과 생성

int[][] id_and_score = new int[5][2];

String add_and_name[][] = new String[10][10];

int[][] score = new int[2][];score[0] = new int[2];score[1] = new int[3];score[2] = new int[4];

2차원 배열이지만 각 행의 요소의 개수가 다르게 생성할 수 있다 .

5행과 2열을 가진  2차원 배열 생성

문자열 10행 , 10열의 배열 생성

Page 106: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-1 배열의 선언과 생성4 배열

106

각 행의 요소의 개수가 다른 배열의 형태

147 page

Page 107: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

107

배열의 초기화 과정- 일반적으로 배열을 사용하기 위해 거치는 과정

- 자바에서는 배열의 생성과 초기화 과정을 하나의 문장으로 해결할 수 있는 방법을 제공

배열의 생성과 초기화

int[] id = new int[5];int[0] = 201195041;int[1] = 201195042;int[2] = 201195043;int[3] = 201195044;int[4] = 201195045;

또는int id[] = { 201195041, 201195042, 201195043, 201195044, 201195045 };

생성과 초기화 과정을한 문장으로 작성

Page 108: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

108

배열의 생성과 초기화

String[][] name_addr = new String[3][2]name_addr[0][0] = "kim";name_addr[0][1] = "seoul";name_addr[1][0] = "park";name_addr[1][1] = "busan";name_addr[2][0] = "lee";name_addr[2][1] = "inchon";

또는String[][] name_addr = {{"kim","seoul"},{"park","busan"},{"lee","inchon"}};

생성과 초기화 과정을한 문장으로 작성

int[][] id_score = {{ 70, 80, 90 },{ 98, 69, 49, 97 }, { 36, 70, 78, 91, 73 }};

생성과 초기화 과정을한 문장으로 작성

Page 109: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

109

Length- 배열의 길이를 나타내는 속성

int[] number = new int[20];System.out.println("number 배열의 길이 : " + number.length);

배열 요소의 개수를 반환

Page 110: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

110

실습예제ArraysOneDTest1.java01020304050607080910111213141516171819

public class ArraysOneDTest1 { public static void main(String args[]) { int number[] = new int[10]; System.out.println("number 배열의 길이 : " + number.length);

int i,j,sum=0; double avg; for (i=0; i < number.length ; i=i+1) number[i] = i+1; for (j=0; j < number.length ; j=j+1) sum = sum + number[j]; System.out.println("1 부터 10 까지의 합은 " + sum + " 입니다 "); avg = (double)sum/number.length; System.out.println("1 부터 10 까지의 합의 평균은 " + avg + " 입니다 "); }}

10개의 요소를 가진  int형 배열 선언배열의 길이를 출력 

배열의 각 요소에  1부터  10까지 저장배열의 각 요소의 합계를 구함

Page 111: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

111

프로그램 설명- 04 : 10 개의 요소를 가진 int 형의 배열을 선언하고 생성하였다 .- 05 :  배열의 속성변수인 length 를 이용하여 배열의 길이를 출력하였다 .- 09~10 :  반복문을 이용하여 배열에 정수 값 1 부터 10 을 저장하는 초기화를 수행하였다 .- 14 :  정확한 배열의 평균 값을 구하기 위해 double  값으로 나눗셈을 수행하였다 . sum 

변수의 값을 double 형으로 변환하여 나눗셈을 수행하였다 . double 형으로 형변환하지 않으면 정수 나눗셈이 되어 결과가 5.0 이 된다 .

Page 112: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

112

실습예제ArraysOneDTest2.java0102030405060708091011121314

public class ArraysOneDTest2 { public static void main(String args[]) { int score[] = {88,97,53,62,92,68,82}; int max=score[0]; for (int i=1; i < score.length ; i=i+1) { if ( score[i] > max ) max = score[i]; } System.out.println (" 배열 요소의 최댓값은 " + max + " 입니다 "); }}

배열의 선언과 초기화 수행max 변수에 첫 번째 요소 값 저장

배열 요소 중 가장 큰 값을 max에 저장

Page 113: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

113

프로그램 설명- 04 : 7 개의 요소를 가진 int 형의 배열을 선언하고 초기화 과정을 하나의 문장으로

기술하였다 .- 05 :  최댓값을 저장하는 max  변수에 첫 번째 요소 (score[0])  값을 저장하였다 .- 06 :  배열의 length 속성을 이용하여 조건문을 작성하였다 .  배열의 첫 번째 요소가 이미

max  변수에 저장되었으므로 ,  배열의 두 번째 요소부터 비교하기 위해 i  변숫값을 1로설정하였다 .

- 08~09 : max  변수의 값과 배열의 각 요소를 비교하여 큰 값을 max 에 저장하였다 .

Page 114: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

114

실습예제- 다음 프로그램은 String 형의 배열을 사용하는 프로그램이다 .

ArraysOneDTest3.java010203040506070809

public class ArraysOneDTest3 { public static void main(String args[]) { String weekly_days[] = {" 월요일 ", " 화요일 ", " 수요일 ", " 목요일 ", " 금요일 ", " 토요일 ", " 일요일 "}; System.out.println(" 제일 좋아하는 요일은 " + weekly_days[5] + " 입니다 ."); }}

배열을 선언하고 직접 초기화

배열의 6번째 요소를 출력

Page 115: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

115

프로그램 설명- 04 :  문자열의 배열을 선언하고 직접 초기화를 수행한다 . - 06 :  문자열 배열의 6 번째 요소를 출력한다 . 

Page 116: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

116

실습예제MultiArrayTest1.java01020304050607080910111213141516171819

public class MultiArrayTest1 { public static void main(String args[]) { int two_array[][]= new int[4][5]; int i, j, k = 1; for(i=0; i<4; i++) for(j=0; j<5; j++) { two_array[i][j] = k; k++; } for(i=0; i<4; i++) { for(j=0; j<5; j++) System.out.print(two_array[i][j] + " "); System.out.println(); } }}

10개의 요소를 가진  int형 배열 선언

배열의 각 요소에  1~20까지 저장

하나의 행을 한 라인에 출력

Page 117: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

117

프로그램 설명- 04 : 4*5 개의 행과 열을 (20 개 요소 )  가진 2 차원 배열을 선언한다 . - 06~10 :  내포된 두 개의 for 문을 이용하여 배열의 각 요소에 정수 값을 저장한다 . 1 부터

20 까지가 저장된다 . - 14~15 :  두 개의 반복문을 이용하여 배열 요소 값을 출력한다 .  한 행에 5 개의 값을 옆으로

출력한다 . - 16 :  라인을 바꾼다

Page 118: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

118

실습예제- 다음 프로그램은 2 차원 배열에서 각 행의 요소 수를 다르게 생성하여 사용하는 예이다 .

자바에서 2 차원 배열은 1 차원 배열 여러 개를 배열로 선언한 것과 같다 . 2 차원 배열에서 length 속성은 배열의 행의 개수를 반환한다 . 각 행의 열 ( 요소 ) 의 개수를 알기 위해서는 각 행의 이름에 length 속성을 사용해야 한다 .

MultiArrayTest2.java 01020304050607080910111213

public class MultiArrayTest2 { public static void main(String args[]) { int twoD[][] = new int[4][]; twoD[0] = new int[1]; twoD[1] = new int[2]; twoD[2] = new int[3]; twoD[3] = new int[4]; System.out.println("2 차원 배열에서 행의 길이는 : " +twoD.length); System.out.println(" 첫 번째 행의 요소 수는 : " +twoD[0].length); System.out.println(" 두 번째 행의 요소 수는 : "

2차원 배열을 선언 . 행의 크기만 지정

각 행의 요소 수 (1차원 배열 ) 선언

행의 크기 출력0번째 행의 길이 출력

Page 119: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

119

실습예제MultiArrayTest2.java 1415161718192021222324252627282930313233

+twoD[1].length); System.out.println(" 세 번째 행의 요소 수는 : " +twoD[2].length); System.out.println(" 네 번째 행의 요소 수는 : " +twoD[3].length); int i, j, k = 0; for(i=0 ; i < twoD.length ; i++) for(j=0 ; j< twoD[i].length ; j++) { twoD[i][j] = k; k++; } for(i=0 ; i < twoD.length ; i++) { for(j=0 ; j< twoD[i].length; j++) System.out.print(twoD[i][j] + " "); System.out.println(); } }}

length 속성을 사용하여조건절 지정

Page 120: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

120

프로그램 설명- 04 : 2 차원 배열은 1 차원 배열의 배열로 정의할 수 있다 .  각각 서로 다른 길이를 가진 1

차원 배열 여러 개를 사용하여 2 차원 배열을 구성할 수 있다 . - 05~08 : 2 차원 배열의 각 행에 1 차원 배열을 선언한다 . 길이를 서로 다르게 지정할 수

있다 . - 09 : 2 차원 배열에서 배열 이름을 이용한 length 속성은 행의 개수를 반환한다 . - 10 : 2 차원 배열에서 각 행의 길이를 출력하려면 각 행의 length 속성을 사용한다 .- 20~21 : length 속성을 사용하여 반복문의 조건절을 지정하였다 .

Page 121: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

121

실습예제- 다음 프로그램은 3 차원 배열을 사용하는 예를 보이고 있다 . 자바에서 3 차원 배열은 2

차원 배열을 여러 개 사용하여 구성한다고 생각하면 된다 . 즉 int[3][4][5] 로 구성된 3차원 배열은 2 차원 배열 int[4][5] 가 3 개 있다고 생각하면 되고 , 2 차원 배열 int[4][5]는 1 차원 배열 int[5] 가 4 개 있다고 생각하면 된다 .

- 다음 프로그램은 3 차원 배열을 생성하고 배열의 요소를 초기화한 다음 출력하는 프로그램이다 .

MultiArrayTest3.java01020304050607080910

public class MultiArrayTest3 { public static void main(String args[]) { int threeD[][][] = new int[3][4][5]; int i, j, k, count=11; for( i=0 ; i < threeD.length ; i++) for( j=0; j < threeD[i].length ; j++) for( k=0; k < threeD[i][j].length ; k++) { threeD[i][j][k] = count;

2차원 배열을 선언 . 행의 크기만 지정

각 행의 요소 수 (1차원 배열 ) 선언

Page 122: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

122

실습예제

MultiArrayTest3.java111213141516171819202122232425

count++; } for(i=0; i<threeD.length; i++) { System.out.println((i+1) + " 번째 2 차원 배열 "); for(j=0; j<threeD[i].length; j++) { for(k=0; k<threeD[i][j].length; k++) System.out.print(threeD[i][j][k] + " "); System.out.println(); } System.out.println(); } }}

Page 123: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4 장 . 자바의 기본 구조 II : 선택 , 반복 , 배역

4-2 배열의 초기화 및 사용4 배열

123

프로그램 설명- 04 : 60 개의 요소를 가진 3*4*5 3 차원 배열을 선언하였다 . - 06~08 : 3 개의 내포된 반복문을 사용하여 배열을 초기화하였다 .  각 배열의 length 속성을 사용하여 조건절을 구성하였다 .

Page 124: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

자바 프로그램의 선택 논리

학습정리

124

Page 125: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

자바 프로그램의 선택 논리

학습정리

125

Page 126: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

자바 프로그램의 선택 논리

학습정리

126

Page 127: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

자바 프로그램의 선택 논리

학습정리

127

Page 128: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

자바 프로그램의 반복 논리

학습정리

128

Page 129: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

제어의 이동 ▒① 반복문이나 switch 문 내에서 break 문을 사용하면 제어가 반복문과 switch 문 밖으로 이동된다 .

② continue 문은 제어를 반복문의 처음으로 이동시킨다 .③ return 문은 실행을 중단하고 제어를 호출한 곳으로 이동시킨다 .

배열① 자바의 배열을 사용하기 위해서는 반드시 선언과정과 생성과정이 필요하다 .② 자바에서 배열의 선언과 생성 ,  초기화를 하나의 문장으로 사용할 수 있다 .

int[] number = { 127, 33, 754, 282 };

③ 자바에서 2 차원 배열은 1 차원 배열 여러 개를 묶어 놓은 형태이다 . 3 차원 배열은 2차원 배열을 여러 개 사용하여 구성한다

학습정리

129

Page 130: 4 장 .  자바의 기본 구조  II : 선택 ,  반복 ,  배역

4장. 자바의 기본 구조 II :선택, 반복, 배역

130

수고하셨습니다 .질문 있습니까 ?