Upload
aimee-cummings
View
65
Download
16
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
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
수고하셨습니다 .질문 있습니까 ?