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

Post on 15-Mar-2016

65 Views

Category:

Documents

16 Downloads

Preview:

Click to see full reader

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

TRANSCRIPT

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

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

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

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

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

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

학습목표

2

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

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

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

목차

4

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

1-1 if 문 1 선택문

5

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

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

96 page

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(" 짝수입니다 ");}

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

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보다 작은지 검사조건이 참일 경우에만 수행

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

1-1 if 문 1 선택문

8

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

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

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

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

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

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

1-1 if 문 1 선택문

9

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 이상인지 검사

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

조건이 참일경우에만 수행

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

1-1 if 문 1 선택문

11

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

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

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

1-1 if 문 1 선택문

12

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

99 page

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(" 학점취득여부와 상관없이 무조건 수행됨 ");

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

선택문과 상관없는 문장

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(" 감사합니다 "); }}

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

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

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

1-1 if 문 1 선택문

15

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

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

1-1 if 문 1 선택문

16

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

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

101 page

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(" 학점취득 실패 ");

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(" 학점 취득 실패 "); }}

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

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

1-1 if 문 1 선택문

19

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

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

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

1-1 if 문 1 선택문

20

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

103 page

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이다 . 

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절

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절

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

1-1 if 문 1 선택문

24

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

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

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

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

1-2 switch 문1 선택문

25

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

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

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

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

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

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

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

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

1-2 switch 문1 선택문

26

형식 : switch 문

107 page

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 사이의 값이 아닐 경우 수행

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 절

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  절

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

1-2 switch 문1 선택문

30

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

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로 지정하였다 . 

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

1-2 switch 문1 선택문

32

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

2 반복문

33

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

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

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

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

2-1 while 문2 반복문

34

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

112 page

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(" 이 부분은 영원히 반복된다 ");}

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

무한 반복된다 . 

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

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 + " 입니다 "); }}

조건이 참인 동안 반복

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

2-1 while 문2 반복문

37

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

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

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

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

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문

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

2-1 while 문2 반복문

39

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

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문

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

2-1 while 문2 반복문

41

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

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

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

2-2 do-while 문2 반복문

42

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

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

116 page

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문은 메뉴를 나타낼 때 적합하다 .

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문 반복 부분

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

2-2 do-while 문2 반복문

45

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

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) {

메뉴를 나타내는프로그램

키보드 입력조건절

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; } }}

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

2-2 do-while 문2 반복문

48

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

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

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

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

2-2 do-while 문2 반복문

49

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

2-2 do-while 문2 반복문

50

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

2-2 do-while 문2 반복문

51

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

2-3 for 문2 반복문

52

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

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

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

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

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

2-3 for 문2 반복문

53

For 문

121 page

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

2-3 for 문2 반복문

54

For 문

121 page

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문 내에서만 사용이 가능오류 발생

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 ( ; ; ){ .............}

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

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문을 이용한 반복

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

2-3 for 문2 반복문

58

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

가독성에 좋다

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 + " 입니다 "); }}

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

2-3 for 문2 반복문

60

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

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문

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문

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

2-3 for 문2 반복문

63

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

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

2-3 for 문2 반복문

64

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

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

65

3 개의 반복문의 구조

126 page

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 ) 수행결과적어도 한번은 수행됨

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

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

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

67

반복문의 내포된 형태

128 page

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문

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()) 을 사용하였다 .

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문

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 문의 조건절이 거짓이 되어 프로그램이 종료된다 .

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문

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 문으로 작성된 프로그램과 동일한 구조를 가진다 .

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

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

74

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

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

75

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

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

76

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

3-1 break 문3 제어의 이동

77

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

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

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

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

break; 형식

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문 밖으로 이동

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

3-1 break 문3 제어의 이동

79

break 문

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

while문 밖으로 이동

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문 수행

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

3-1 break 문3 제어의 이동

81

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

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

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문 수행

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

3-1 break 문3 제어의 이동

83

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

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

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 이상이면 내포된 반복문을 벗어남

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

3-1 break 문3 제어의 이동

85

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

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

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문 밖으로 이동

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는 내포된 블록 구조에서만 사용이 가능하다 . 

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을 사용하여 블록을지정할 수 있다 . 

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 블록 선언

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 블록을 선언한다 . 

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 블록으로 지정 ,무한 반복

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 블록을 벗어난다 .

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

3-1 break 문3 제어의 이동

93

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

3-2 continue 문3 제어의 이동

94

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

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

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 값을 검사하여 홀수일 경우에는 제어를 반복문의 처음 (증감부분 )으로 이동한다 . 

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 블록 선언

내포된 반복문 선언

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

3-2 continue 문3 제어의 이동

97

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

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

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

3-3 return 문3 제어의 이동

98

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

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++; } }}

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

3-3 return 문3 제어의 이동

100

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

다 . 

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);

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

4 배열

102

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

145 page

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장설명 )

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개의 문자열 요소 (참조 자료형 )를 가진배열 생성

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열의 배열 생성

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

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

106

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

147 page

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 };

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

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 }};

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

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

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

109

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

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

배열 요소의 개수를 반환

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까지 저장배열의 각 요소의 합계를 구함

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

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

111

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

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

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에 저장

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

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

113

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

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

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

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

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번째 요소를 출력

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

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

115

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

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까지 저장

하나의 행을 한 라인에 출력

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

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

117

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

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

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

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번째 행의 길이 출력

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 속성을 사용하여조건절 지정

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

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

120

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

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

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

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차원 배열 ) 선언

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(); } }}

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

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

123

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

자바 프로그램의 선택 논리

학습정리

124

자바 프로그램의 선택 논리

학습정리

125

자바 프로그램의 선택 논리

학습정리

126

자바 프로그램의 선택 논리

학습정리

127

자바 프로그램의 반복 논리

학습정리

128

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

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

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

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

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

학습정리

129

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

130

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

top related