Download presentation
Presentation is loading. Please wait.
1
Java 4장. 자바의 기본 구조 II : 선택, 반복, 배역 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 + "입니다"); }
2
학습목표 프로그램의 논리 구조인 선택과 반복 논리에 대해 학습한다.
가장 많이 사용되는 if문의 종류와 사용방법에 관해 학습하고, 다중 선택이 가능한 switch문에 대해서도 학습한다. 반복 논리를 제공하는 while문, do-while문, for문에 대해 구조와 사용방법을 학습한다. 선택문이나 반복문 내에서 제어를 이동시키기 위한 break, continue, return문의 사용방법에 관해 학습한다. 배열의 생성과 사용방법에 관해 학습한다.
3
목차 section 1 선택문 section 2 반복문 section 3 제어의 이동 1-1 if문 1-2 switch문
2-1 while문 2-2 do-while문 2-3 for문 2-4 반복문의 비교와 중첩 section 3 제어의 이동 3-1 break문 3-2 continue문 3-3 return문
4
목차 section 4 배열 4-1 배열의 선언과 생성 4-2 배열의 초기화 및 사용
5
1-1 if문 자바 언어는 선택 논리를 대표하는 구문으로서 다양한 형태의 if문을 제공 단순 if문(if) 1 선택문
조건에 따라 단순히 한 단위의 특정 작업을 수행해야 하는 경우 사용 96 page
6
1-1 if문 단순 if문(if) 1 선택문 if ( num < 0 )
System.out.println("음수입니다"); 문장이 한 문장일 경우 “{ }”로 묶지 않아도 된다. if ( (num > 0) && (num % 2 == 0) ) { System.out.println("양수입니다"); System.out.println("짝수입니다"); } 문장이 한 문장보다 많으면 반드시 “{ }”로 묶는다.
7
1 선택문 1-1 if문 실습예제 다음 프로그램은 입력된 값이 음수일 경우에만 메시지를 출력하는 프로그램이다. 조건절이 참일 경우에 수행할 문장이 한 문장일 경우에는 “{}”를 사용하지 않아도 된다. SimpleIFTest1.java 01 02 03 04 05 06 07 08 public class SimpleIFTest1 { public static void main(String args[]) { int count = Integer.parseInt(args[0]); if (count < 0) System.out.println(count + "은(는) 음수입니다 "); } 입력된 값이 0보다 작은지 검사 조건이 참일 경우에만 수행
8
1 선택문 1-1 if문 프로그램 설명 00 : 프로그램 실행 시 입력되는 매개변수는 무조건 String(문자열) 클래스의 객체 배열에 저장된다. 매개변수 순서에 따라 배열에 입력된다. 04 : 실행 시 입력받은 문자열 매개변수를 정수로 바꾸기 위해 사용하는 클래스 메소드이다. 클래스 메소드에 대해서는 2부에서 자세하게 설명한다. 여기서는 단순히 문자열배열의 한 항목을 정수로 바꾸는 기능을 한다고 이해하면 된다. 05 : 단순 if문의 조건문으로 결과는 항상 참 또는 거짓이 된다. 06 : 조건절이 참일 경우 수행하는 문장이다. 조건절이 거짓이 될 경우 이 프로그램은 아무런 출력 없이 프로그램이 종료된다.
9
1 선택문 1-1 if문
10
1 선택문 1-1 if문 실습예제 다음 프로그램은 성적을 입력받아 90점 이상이면 “축하합니다 A학점을 취득하셨습니다”를 출력하는 프로그램이다. 또한 입력점수와 상관없이 프로그램을 종료하기 전에 “감사합니다”를 출력하고 있다. SimpleIFTest1.java 01 02 03 04 05 06 07 08 09 10 11 12 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 이상인지 검사 조건이 참일 경우에만 수행 조건과 상관없이 무조건 수행
11
1-1 if문 프로그램 설명 1 선택문 05 : 입력된 점수가 90 이상(크거나 같으면)이면 참이 되는 조건절이다.
05 : 입력된 점수가 90 이상(크거나 같으면)이면 참이 되는 조건절이다. 06~09 : 조건절이 참일 경우 수행하는 문장이다. 조건의 결과에 따라 수행해야 하는 문장이 여러 문장일 경우에는 반드시 “{}”로 문장을 묶어주어야 한다. 10 : 조건절의 결과에 상관없이 수행되는 문장이다.
12
1-1 if문 이중 if문(if-else) 1 선택문
조건식의 결과(참 또는 거짓)에 따라 특정 작업을 수행해야 하는 경우 사용 99 page
13
1-1 if문 이중 if문(if-else) 1 선택문 if ( score >= 60 )
System.out.println("학점취득 성공"); else System.out.println("학점취득 실패"); System.out.println("학점취득여부와 상관없이 무조건 수행됨"); 선택문과 상관없는 문장 if ( num % 2 == 0 ) { System.out.println("입력된 수 : " + num); System.out.println("짝수입니다"); } else System.out.println("홀수입니다"); 여러 문장일 경우 “{ }”로 묶는다.
14
1 선택문 1-1 if문 실습예제 성적을 입력받아 90 이상이면 “A학점 취득 성공”을 출력하고 아니면 “A학점 취득 실패”를 출력하는 프로그램이다. 또한 점수와 상관없이 항상 마지막에는 “감사합니다”를 출력한다. DoubleIFTest.java 01 02 03 04 05 06 07 08 09 10 11 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("감사합니다"); } 조건이 참일 경우 수행 조건이 거짓일 경우 수행 조건과 상관없이 무조건 수행
15
1-1 if문 프로그램 설명 1 선택문 06 : if문에서 사용된 조건절이 참일 경우에 수행되는 문장이다.
16
1-1 if문 다중 if문(if-else if) 1 선택문
조건이 거짓일 경우 다시 선택조건을 제시하여 조건의 결과에 따라 처리하며, 결과가 거짓일 경우 다시 선택조건을 반복적으로 제시 101 page
17
1-1 if문 다중 if문(if-else if) 1 선택문 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("학점취득 실패");
18
1 선택문 1-1 if문 실습예제 조건절의 결과가 거짓일 때 else if 절을 이용하여 다시 조건을 검사한다. 마지막에 더 이상 비교할 조건이 없을 경우에는 else 절만 사용하여 기술한다. MultiIFTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 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("학점 취득 실패"); } 다시 조건 검사 다시 조건 검사 다시 조건 검사 모든 조건이 거짓일 때 수행
19
1-1 if문 프로그램 설명 1 선택문 07 : 첫 번째 조건절의 결과가 거짓일 경우 다시 조건을 검사한다.
07 : 첫 번째 조건절의 결과가 거짓일 경우 다시 조건을 검사한다. 09 : 첫 번째, 두 번째 조건절의 결과가 거짓일 경우 다시 조건을 검사한다. 11 : 첫 번째, 두 번째, 세 번째 조건절의 결과가 거짓일 경우 다시 조건을 검사한다. 13 : 더 이상 조건이 없을 경우는 else 절로 기술한다. 더 이상 조건을 필요로 하지 않을 경우 마지막에는 else 절을 이용하여 기술한다.
20
1 선택문 1-1 if문 내포된 if문 if 선택문 내에 또 다른 if문이 내포 103 page
21
1-1 if문 이중 if문(if-else) 1 선택문 if (score > 60) if(score > 70)
System.out.println("A학점"); else System.out.println("학점취득실패"); 들여쓰기가 잘못된 예 첫 if문의 else로 보이지만 마지막 if문의 else이다. if (score >= 90) if (score >= 95) System.out.println("A+ 학점입니다"); else System.out.println("A- 학점입니다"); if (score >= 60) if (score >= 80) System.out.println("B 학점입니다"); System.out.println("C 또는 D 학점입니다"); System.out.println("학점취득 실패"); 내포된 관계에서 else는 가장 가까운 if의 else이다. 내포된 관계의 if문을 사용할 때는 들 여쓰기를 명확하게 하는 것이 좋다.
22
1 선택문 1-1 if문 실습예제 프로그램 실행 시 성적을 입력받아 성적에 따라 해당 학점을 출력하는 프로그램을 내포된 if문을 사용하여 작성하였다. 학점을 A~B는 우수학점군으로 C~D는 보통학점군으로 분류하여 출력하도록 프로그램을 작성하였다. NestedIFTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 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 학점입니다"); } if ~ else절 if ~ else절
23
1-1 if문 실습예제 1 선택문 NestedIFTest.java 14 15 16 17 18 19 20 21 22 23 24
25 26 27 { if (score >= 60) System.out.println("보통학점군에 속합니다") if (score >= 70) System.out.println("C 학점입니다"); else System.out.println("D 학점입니다"); } System.out.println("학점취득 실패"); if ~ else절 if ~ else절
24
1 선택문 1-1 if문 프로그램 설명 08~11 : 05번 문장의 if 조건절이 참인 경우에 수행되는 내포된 if-else 문이다. 조건절의 결과에 따라 수행할 문장이 여러 개일 경우 반드시 “{}”로 묶어서 표현해야 한다. 15 : 13번 else 문장 내에 포함된 if문이다. 내포된 if문은 특정 형식을 가지지 않는다. 다양한 형태로 내포되어 사용될 수 있다.
25
1-2 switch문 자바에서는 다중 선택 기능을 제공하기 위해 switch문을 제공 Switch문 switch문의 수행
1 선택문 1-2 switch문 자바에서는 다중 선택 기능을 제공하기 위해 switch문을 제공 Switch문 수식 결과의 값에 따라 서로 다른 처리를 기술할 때 유용 if-else-if문을 사용하여 다중 선택을 기술할 수도 있지만 switch는 간결한 구문으로 다중 선택의 기능을 제공 switch문의 수행 우선 정수식이 평가되고 평가된 값에 적합한 case 절이 수행 Case 절의 정수 값은 반드시 상숫값, 변수가 사용될 수 없음 break문을 만나면 switch문을 빠져나감 평갓값에 맞는 case문이 없을 경우에는 default로 지정된 문장을 수행하고 case문을 종료
26
1 선택문 1-2 switch문 형식 : switch문 107 page
27
1-2 switch문 형식 : switch문 1 선택문 swith (num) { case 1 :
System.out.println("num의 값은 1입니다"); break; case 2 : System.out.println("num의 값은 2입니다"); case 3 : System.out.println("num의 값은 3입니다"); case 4 : System.out.println("num의 값은 4입니다"); default : System.out.println("num의 값은 1-4 사이의 값이 아닙니다"); } num의 값이 1~4 사이의 값이 아닐 경우 수행
28
1 선택문 1-2 switch문 실습예제 다음 프로그램은 사용자로부터 월을 입력받아 해당하는 계절을 출력하는 프로그램이다. case 절에서 처리할 내용이 없을 경우에는 그대로 비워둔다. SwitchTest1.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 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: switch 절 case 절을 하나의 절로 묶어 수행
29
1-2 switch문 실습예제 1 선택문 SwitchTest1.java 16 17 18 19 20 21 22 23 24 25
26 27 28 29 30 31 32 33 MtoS = "봄입니다."; break; case 6: case 7: case 8: MtoS = "여름입니다."; case 9: case 10: case 11: MtoS = "가을입니다."; default: MtoS = "12개월 이내의 달이 아닙니다."; } System.out.println(month + "월은 " + MtoS ); default 절
30
1-2 switch문 프로그램 설명 1 선택문 06 : switch 절의 정수식의 값에 따라 적합한 case 절을 수행한다.
28~29 : default 절은 case 절에 하나도 해당하는 경우가 없을 경우 수행한다.
31
1 선택문 1-2 switch문 실습예제 다음 프로그램은 앞에서 switch문으로 작성된 프로그램을 if-else-if문을 사용하여 작성한 프로그램이다. 사용자는 응용에 적합한 선택문을 사용하여 프로그램을 작성하여야 한다. SwitchTest1.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 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로 지정하였다.
32
1 선택문 1-2 switch문
33
반복 논리 2 반복문 어떤 작업이 반복적으로 수행될 때를 표현하는 방법 while, do-while, for문을 제공
모든 반복문들은 조건식이 만족하는 동안 지정된 부분을 반복 수행
34
2 반복문 2-1 while문 while문 특정 조건이 만족하는 동안 지정된 영역을 반복할 수 있는 기능 112 page
35
2-1 while문 while문 2 반복문 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("이 부분은 영원히 반복된다"); } 무한 반복된다.
36
2 반복문 2-1 while문 실습예제 다음 프로그램은 1부터 10까지의 합을 구하는 프로그램이다. 특정 변수의 값을 1씩 증가시켜 합을 구하고 있다. WhileTest1.java 01 02 03 04 05 06 07 08 09 10 11 12 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 + " 입니다"); 조건이 참인 동안 반복
37
2 반복문 2-1 while문 프로그램 설명 05 : count 값이 10보다 작거나 같을 때까지를 반복 조건으로 제시하였다. 이 조건이 참이면 반복 부분을 한 번 수행하고 다시 조건을 검사한다. 06~09 : 반복문의 조건이 참일 동안 수행되는 부분이다. 반복문의 조건을 거짓으로 만들기 위해 count의 값을 1씩 증가시키고 있다. 반복이 10번 수행되면 count의 값이 11이 되어 반복문의 조건이 거짓이 되어 반복문이 종료된다. 10 : while문의 조건이 거짓이 되어 while문을 벗어나면 수행된다.
38
2-1 while문 실습예제 2 반복문 다음 프로그램은 구구단 3단을 출력하는 프로그램이다. WhileTest2.java 01
02 03 04 05 06 07 08 09 10 11 12 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문
39
2-1 while문 프로그램 설명 2 반복문 06 : y 값이 9보다 작거나 같을 때까지를 조건으로 지정한다.
09 : y 값을 증가시켜서 while문의 조건을 거짓으로 만든다.
40
2 반복문 2-1 while문 실습예제 다음 프로그램은 두 수의 중간 값을 구하는 프로그램이다. 이 프로그램의 while문은 반복 부분이 없는 프로그램이다. WhileTest3.java 01 02 03 04 05 06 07 08 09 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문
41
2 반복문 2-1 while문 프로그램 설명 00 : while문의 조건식 내에 증감 연산자를 사용하였다. while문의 반복 부분이 존재하지 않기 때문에 라인 종료기호(;)를 while문 끝에 추가하였다. i 값과 j 값이 1씩 증가 감소하면서 중간 값을 구하고 있다. 정수의 중간 값을 구하는 프로그램이므로 짝수만을 사용하였다.
42
2-2 do-while문 do-while문 2 반복문 반복될 문장이 먼저 실행되고 조건이 검사되는 반복문
조건을 나중에 검사함으로서 반복될 문장이 최소 한 번은 실행 116 page
43
2-2 do-while문 do-while문 2 반복문 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문은 메뉴를 나타낼 때 적합하다.
44
2 반복문 2-2 do-while문 실습예제 while문에서도 예제로 작성해 보았던 1부터 10까지 더하는 프로그램을 do-while문으로 작성해 보았다. DoWhileTest1.java 01 02 03 04 05 06 07 08 09 10 11 12 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문의 조건절
45
2-2 do-while문 프로그램 설명 2 반복문 05~08 : do-while문에서 반복되는 문장이다.
46
2 반복문 2-2 do-while문 실습예제 사용자로부터 입력된 값이 메뉴의 범위를 벗어나면 다시 메뉴를 보여주는 프로그램이다. DoWhileTest2.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 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) { 메뉴를 나타내는 프로그램 키보드 입력 조건절
47
2-2 do-while문 실습예제 2 반복문 DoWhileTest2.java 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 case '1': System.out.println("****while 반복문****"); System.out.println("조건을 먼저 검사하고 조건이 참일 경우 반복 부분을 수행하는 반복문"); break; case '2': System.out.println("****do-while 반복문****"); System.out.println("반복 부분을 먼저 수행하고 조건을 검사한다. 최소한 한번은 수행되는 반복문"); case '3': System.out.println("****for 반복문****"); System.out.println("지정된 횟수만큼 반복 부분을 수행하는 반복문"); }
48
2 반복문 2-2 do-while문 프로그램 설명 02 : 이 프로그램은 실행 시 사용자로부터 입력을 받아들이는 프로그램이다. 자바 프로그램에서 프로그램 실행 시에 사용자로부터 입력을 받아들이기 위해서는 System.in.read()를 수행하여 키보드로부터 입력을 받아들여야 한다. 또한 입출력 시 발생할 수 있는 예외처리를 반드시 해주어야 한다. 이 두 부분은 이 책의 해당 부분에서 상세하게 설명한다. 03 : 입력되는 값을 char형의 데이터로 받아들이기 위한 변수를 선언한다. 05~09 : 메뉴를 나타내는 프로그램 부분이다. 10 : 사용자의 키보드로부터 하나의 문자를 받아들이기 위한 문장이다. 11 : 출력문을 매개변수 없이 사용하면 줄을 바꾸는 기능을 한다. 12 : 사용자로부터 입력된 문자가 ‘1’과 ‘3’사이의 숫자가 아니면 다시 메뉴를 나타낸다.
49
2 반복문 2-2 do-while문
50
2 반복문 2-2 do-while문
51
2 반복문 2-2 do-while문
52
2-3 for문 For문 2 반복문 지정된 횟수만큼 반복 수행하는 반복문
초기식 : 주로 반복 변수의 초기화를 위해 사용. 초기식은 처음 한 번만 수행 조건식 : 조건을 나타내며, 조건식이 참일 동안 반복 부분 수행 증감식 : 반복 부분을 수행한 후에 반드시 수행되는 문장. 주로 조건식에 변화를 주는 수식으로 구성
53
2 반복문 2-3 for문 For문 121 page
54
2 반복문 2-3 for문 For문 121 page
55
2-3 for문 For문 2 반복문 int i, sum = 0;
for ( 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); } 반복될 부분이 여러 문장일 경우 반드시 “{ }”로 묶어야 한다. int sum = 0; for (int i = 1 ; i <= 10 ; i = i + 1 ) sum = sum + i ; System.out.println("1부터 " + i + "까지의 합 = " + sum); for문 내에서 선언된 변수는 for문 내에서만 사용이 가능 오류 발생
56
2-3 for문 For문 2 반복문 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 + “입니다"); if ( i == 10 ) flag = true; i++; } 초기식과 증감식이 생략될 수 있다. for ( ; ; ) { } 모두 생략될 수 있다. 무한 반복을 수행한다.
57
2 반복문 2-3 for문 실습예제 while문과 do-while문에서 작성하였던 1부터 10까지의 합을 구하는 프로그램을 for문을 사용하여 작성하였다. ForTest1.java 01 02 03 04 05 06 07 08 09 10 11 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문을 이용한 반복
58
2-3 for문 프로그램 설명 2 반복문 05 : for 구문에 반복의 초기식과 조건식, 증감식을 지정하였다.
06~08 : 반복 부분을 지정한다. 반복 부분이 한 문장이라도 “{}”로 묶어 주는 것이 가독성에 좋다
59
2 반복문 2-3 for문 실습예제 while문과 do-while문에서 작성하였던 1부터 10까지의 합을 구하는 프로그램을 for문을 사용하여 작성하였다. ForTest2.java 01 02 03 04 05 06 07 08 09 10 11 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 + " 입니다 ");
60
2 반복문 2-3 for문 프로그램 설명 05 : 홀수만 더하기 위해 i 값을 2씩 증가시켰다.
61
2 반복문 2-3 for문 실습예제 사용자로부터 두 개의 숫자를 입력받아 최소공배수와 최대공약수를 구하는 프로그램이다. 이 프로그램에서는 if문 내에 break문을 사용하였는데, 이 문장은 자신을 둘러싸고 있는 반복문을 벗어나 다음 문장을 수행하는 역할을 한다. break문에 대해서는 3.1절에서 설명한다. ForTest3.java 01 02 03 04 05 06 07 08 09 10 11 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문
62
2-3 for문 실습예제 2 반복문 ForTest3.java 12 13 14 15 16 17 18 19 20 21 22 23
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문
63
2-3 for문 프로그램 설명 2 반복문 07 : 최소공배수를 구하기 위한 for 반복문이다.
09 : i 값을 두 개의 값으로 나누어 나머지가 0 이 되는 값을 구한다. 10 : 두 값의 나머지가 모두 0 이면 반복문을 벗어나 다음 문장을 수행한다. 13 : 최대공약수를 구하기 위한 for 반복문이다. 15 : 두 개의 값을 i(i=n부터 시작) 값으로 나누어 나머지가 0 이 되는 값을 구한다. 16 : 두 값의 나머지가 모두 0 이면 반복문을 벗어나 다음 문장을 수행한다.
64
2 반복문 2-3 for문
65
2 반복문 2-4 반복문의 비교와 중첩 3개의 반복문의 구조 126 page
66
2-4 반복문의 비교와 중첩 3개의 반복문의 구조 2 반복문 For문 for ( j=1 ; j < 0 ; j++)
System.out.println("한번도 수행안됨) 수행결과 while문 j=1; while( j < 0 ) do-while문 do { System.out.println("적어도 한번은 수행됨); }while ( j < 0 ) 적어도 한번은 수행됨 조건을 먼저 검사함으로써 한 번도 수행이 되지 않을 수 있다.
67
2 반복문 2-4 반복문의 비교와 중첩 반복문의 내포된 형태 128 page
68
2 반복문 2-4 반복문의 비교와 중첩 실습예제 구구단을 1단부터 9단까지 출력하는 프로그램을 3가지 형태의 반복문으로 작성하였다. 구구단을 출력하기 위해 내포된 반복문을 사용하였다. NestedLoopForTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 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문
69
2-4 반복문의 비교와 중첩 프로그램 설명 2 반복문 05 : 단을 출력하기 위한 바깥쪽 for문을 작성한다.
07 : 단의 제목을 출력한다. 08~09 : 각 단의 내용을 출력하기 위한 내포된 for문 10 : 한 단을 출력하고 한 줄을 띤다. : 두 개의 for문이 내포된 형태이다. 구구단을 출력하기 위해서 바깥쪽 for문은 2단부터 9단까지를 반복하고, 내포된 for문에서는 각 단별로 1부터 9까지의 곱셈 결과를 출력하고 있다. 한 단이 끝나면 한 줄을 띠기 위해 빈 출력문(System.out.println())을 사용하였다.
70
2-4 반복문의 비교와 중첩 실습예제 2 반복문 NestedLoopWhile.java 01 02 03 04 05 06 07
08 09 10 11 12 13 14 15 16 17 18 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문
71
2-4 반복문의 비교와 중첩 프로그램 설명 2 반복문 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문의 조건절이 거짓이 되어 프로그램이 종료된다.
72
2-4 반복문의 비교와 중첩 실습예제 2 반복문 NestedLoopDoWhileTest.java 01 02 03 04 05
06 07 08 09 10 11 12 13 14 15 16 public class NestedLoopDoWhileTest{ public static void main(String args[]) { int i=2; do{ System.out.println("*** " + i + "단 ***"); int j=1; System.out.println(i+" * " + j + " = " + i*j); j++; }while ( j<=9 ); System.out.println(); i++; }while ( i<=9 ); } 바깥쪽 do-while문 내포된 do-while문
73
2-4 반복문의 비교와 중첩 프로그램 설명 2 반복문 07 : 내포된 do-while문의 조건절 제어 변숫값을 초기화한다.
13 : do-while의 조건절을 거짓으로 만들기 위해 i 값을 1증가한다. 08~11 : 각 단의 내용을 출력하기 위한 내포된 do-while문이다. 조건을 제어하는 변숫값 j를 1씩 증가시키고 있다. 05~14 : 단을 출력하기 위한 바깥쪽 do-while문을 작성한다. 조건을 나중에 검사한다는 것을 제외하고는 while문으로 작성된 프로그램과 동일한 구조를 가진다.
74
2 반복문 2-4 반복문의 비교와 중첩
75
2 반복문 2-4 반복문의 비교와 중첩
76
2 반복문 2-4 반복문의 비교와 중첩
77
3-1 break문 프로그램에서 제어를 이동시키기 위해 break, continue, return문을 제공 break문
3 제어의 이동 break문 프로그램에서 제어를 이동시키기 위해 break, continue, return문을 제공 break문 두 가지 형태로 사용이 가능 switch문이나 반복문을 벗어나는데 사용 switch문이나 반복문 내에서 break문이 수행되면 실행을 중단하고 switch문이나 반복문을 벗어나 다음의 첫 문장으로 제어가 이동 break; 형식
78
3-1 break문 break문 3 제어의 이동 switch ( a+b ) { case 1:
System.out.println(" "); break; case 2 : case 3 : ...... default : } switch문 밖으로 이동
79
3-1 break문 break문 3 제어의 이동 while (true) { if ( 100 < j ) break;
sum = sum+j; j++; } while문 밖으로 이동
80
3 제어의 이동 break문 실습예제 1부터 100 사이를 반복하는 반복문 내에 특정 조건을 가지는 선택문을 삽입하여 조건이 만족하면 반복문을 벗어나는 프로그램을 작성하였다. ForBreakTest.java 01 02 03 04 05 06 07 08 09 10 11 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문 수행
81
3-1 break문 프로그램 설명 3 제어의 이동 04 : 100번을 반복하기 위한 for 반복문이다.
06 : 반복에서 i의 값을 검사하여 그 값이 5면 break문을 수행한다. break문은 주로 반복문 내에서 특정 조건에 적합할 때 반복을 벗어나기 위해 사용한다. 09 : break문 다음에 수행되는 문장이다.
82
3 제어의 이동 break문 실습예제 while문의 조건절을 true로 설정한 다음, 반복문 내에서 특정 조건을 검사하여 반복을 벗어나는 프로그램이다. WhileBreakTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 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문 수행
83
3-1 break문 프로그램 설명 3 제어의 이동 05 : 100번을 반복하기 위한 for 반복문이다.
07 : 반복에서 i의 값을 검사하여 그 값이 5면 break문을 수행한다. break문은 주로 반복문 내에서 특정 조건에 적합할 때 반복을 벗어나기 위해 사용한다. 11 : break문 다음에 수행되는 문장이다.
84
3 제어의 이동 break문 실습예제 반복문이 내포된 상태에서 break문이 사용되면, break문을 포함하고 있는 반복문만 벗어난다. 다음 프로그램은 내포된 for문에서의 break를 사용하는 예이다. NestedForBreakTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 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 이상이면 내포된 반복문을 벗어남
85
3-1 break문 프로그램 설명 3 제어의 이동 05 : 바깥쪽 반복문을 선언한다. 반복문은 9번 반복된다.
05 : 바깥쪽 반복문을 선언한다. 반복문은 9번 반복된다. 07 : 내포된 반복문을 선언한다. 09 : 변수 j 값이 6 이상이면 내포된 반복문을 벗어나 12번 문장을 수행한다. 내포된 반복문 내에서 break문이 사용되면 해당 반복문만 벗어난다. 10 : “*”을 출력한다. 출력 후 줄을 바꾸지 않는다. 12 : 바깥쪽 반복문의 반복 부분으로 줄을 바꾼다.
86
3-1 break문 break label 문 break label; 형식 3 제어의 이동
First : { Second : { Third : { if ( 5 < a ) break Second; System.out.println("Third 블록입니다"); } System.out.println("Second 블록입니다"); System.out.println("First 블록입니다"); Second문 밖으로 이동
87
3-1 break문 break label 문 3 제어의 이동 First : { .......... Second : {
if ( a > 5 ) break Third; System.out.println("Third 블록입니다"); System.out.println("Second 블록입니다"); } System.out.println("First 블록입니다"); Third : { 오류 발생 reak는 내포된 블록 구조에서만 사용이 가능하다.
88
3-1 break문 break label 문 3 제어의 이동 Loop : for( j=2 ; j <= 9 ; j++) {
InnerLoop : for ( k=1 ; k <= 9 ; k++) { if ( k > 5 ) break InnerLoop; } System.out.println("Loop 블록입니다"); 반복문 앞에 label을 사용하여 블록을 지정할 수 있다.
89
3-1 break문 실습예제 3 제어의 이동 내포된 블록에서 일반 블록을 지정하여 블록을 벗어나는 예를 나타낸 프로그램이다.
BreakLabelTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 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 블록 문장"); Third 블록 선언 Second 블록 선언 First 블록 선언 break Second문 수행
90
3 제어의 이동 break문 프로그램 설명 09 : break Second문을 수행하여 Second 블록 밖으로 제어가 이동된다. 05~15 : First 블록을 선언한다. break label 문장은 반드시 내포된 블록에서만 가능하다. label로 지정된 블록 밖으로 제어가 이동된다. 06~13 : First 블록 안에 내포된 블록으로 Second 블록을 선언한다. 07~11 : Second 블록 안에 내포된 블록으로 Third 블록을 선언한다.
91
3 제어의 이동 break문 실습예제 두 개의 무한 반복문에서 break문과 break label 문의 사용 예를 보이고 있다. BreakLabelTest2.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 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++; Innerloop 블록으로 지정, 무한 반복 Loop 블록, 무한 반복
92
3-1 break문 프로그램 설명 3 제어의 이동 10 : j 값이 9보다 크면 현재의 반복문을 벗어난다.
11 : i 값이 9보다 크면 Loop 블록을 벗어나 프로그램이 종료된다. 05~17 : Loop 블록으로 지정된 무한 반복문을 선언한다. 08~14 : Innerloop 블록으로 지정된 무한 반복문으로서 Loop 블록에 내포되어 있다. 내포된 블록(Innerloop)에서 조건에 따라 블록을 벗어난다. 변수 j의 값이 9보다 크면 자신의 블록을 벗어나고, 변수 i의 값이 9보다 크면 바깥의 Loop 블록을 벗어난다.
93
3 제어의 이동 break문
94
3-2 continue문 반복문의 특정 지점에서 제어를 반복문의 처음으로 보내기 위해 continue문을 사용
3 제어의 이동 3-2 continue문 반복문의 특정 지점에서 제어를 반복문의 처음으로 보내기 위해 continue문을 사용 반복문 내에서 continue문을 만나면 수행을 중지하고 제어를 반복문의 처음으로 이동
95
3 제어의 이동 3-2 continue문 실습예제 다음 프로그램은 반복문 내에서 continue문을 사용하는 예이다 사이의 수 중에서 짝수만을 더하는 프로그램이다. 현재의 수가 홀수일 경우에는 반복문의 처음으로 제어를 이동 ContinueTest.java 01 02 03 04 05 06 07 08 09 10 11 12 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 값을 검사하여 홀수일 경우에는 제어를 반복문의 처음(증감부분)으로 이동한다. 짝수인 경우만 더한다.
96
3 제어의 이동 3-2 continue문 실습예제 내포된 for문에서 label을 이용하여 바깥의 for문으로 제어를 이동하는 프로그램 ContinueTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 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 블록 선언 내포된 반복문 선언
97
3-2 continue문 프로그램 설명 3 제어의 이동 05 : 반복문에 Outer 블록을 선언한다.
08 : 내포된 반복문을 선언한다. 10 : 내포된 반복문에서 바깥쪽 반복문의 처음으로 제어를 이동시킨다. 이를 위해 바깥쪽 반복문을 Outer 블록으로 지정하였고, continue문에서 label로 Outer를 지정하였다.
98
3-3 return문 Return문 3 제어의 이동
현재 실행 중인 프로그램을 중단하고, 현재 프로그램을 호출한 곳으로 제어를 반환한다.
99
3 제어의 이동 3-3 return문 실습예제 무한 반복문 내에서 특정 조건에 적합하면 실행을 중단하고 프로그램의 제어를 호출한 곳으로 반환하는 프로그램이다. ReturnTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 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++;
100
3 제어의 이동 3-3 return문 프로그램 설명 08 : 매개변수로 입력된 값을 j 값으로(1씩 증가)나누어 떨어지는 조건을 지정한다. 11 : 실행을 중지하고 제어를 호출한 곳으로 반환한다. 이 프로그램에서는 종료를 의미한다.
101
배열 4 배열 같은 형의 데이터들을 다수 개 저장할 수 있는 기억장소를 의미
하나의 이름으로 다수 개의 데이터를 사용할 수 있음 학생 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);
102
4 배열 변수를 사용하는 경우와 배열을 사용하는 경우 145 page
103
4-1 배열의 선언과 생성 배열의 선언 배열의 생성 형식 : 배열의 선언과 생성 4 배열
배열 요소의 형(type), 배열을 의미하는 대괄호 “[]”, 배열의 이름을 적절히 조합하여 사용 배열의 생성 new 연산자를 사용하여 배열의 형과 크기를 지정 형식 : 배열의 선언과 생성 type name[]; type[] name; type[][] name; type name[][]; type[] name[]; [배열의 선언] name = new type[size]; name = new type[size][size]; [배열의 생성] 배열 생성을 위해서 new 연산자 사용 new 연산자는 객체 생성연산자이다. (5장설명)
104
4-1 배열의 선언과 생성 형식 : 배열의 선언과 생성 4 배열 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개의 문자열 요소(참조 자료형)를 가진 배열 생성
105
4-1 배열의 선언과 생성 형식 : 배열의 선언과 생성 4 배열
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열의 배열 생성
106
4 배열 4-1 배열의 선언과 생성 각 행의 요소의 개수가 다른 배열의 형태 147 page
107
4-2 배열의 초기화 및 사용 배열의 초기화 과정 배열의 생성과 초기화 4 배열 일반적으로 배열을 사용하기 위해 거치는 과정
자바에서는 배열의 생성과 초기화 과정을 하나의 문장으로 해결할 수 있는 방법을 제공 배열의 생성과 초기화 int[] id = new int[5]; int[0] = ; int[1] = ; int[2] = ; int[3] = ; int[4] = ; 또는 int id[] = { , , , , }; 생성과 초기화 과정을 한 문장으로 작성
108
4-2 배열의 초기화 및 사용 배열의 생성과 초기화 4 배열
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 }}; 생성과 초기화 과정을 한 문장으로 작성
109
4-2 배열의 초기화 및 사용 Length 4 배열 배열의 길이를 나타내는 속성
int[] number = new int[20]; System.out.println("number 배열의 길이 : " + number.length); 배열 요소의 개수를 반환
110
4-2 배열의 초기화 및 사용 실습예제 4 배열 ArraysOneDTest1.java 01 02 03 04 05 06 07
08 09 10 11 12 13 14 15 16 17 18 19 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까지 저장 배열의 각 요소의 합계를 구함
111
4-2 배열의 초기화 및 사용 프로그램 설명 4 배열 04 : 10개의 요소를 가진 int형의 배열을 선언하고 생성하였다.
05 : 배열의 속성변수인 length를 이용하여 배열의 길이를 출력하였다. 09~10 : 반복문을 이용하여 배열에 정수 값 1부터 10을 저장하는 초기화를 수행하였다. 14 : 정확한 배열의 평균 값을 구하기 위해 double 값으로 나눗셈을 수행하였다. sum 변수의 값을 double형으로 변환하여 나눗셈을 수행하였다. double형으로 형변환하지 않으면 정수 나눗셈이 되어 결과가 5.0이 된다.
112
4-2 배열의 초기화 및 사용 실습예제 4 배열 ArraysOneDTest2.java 01 02 03 04 05 06 07
08 09 10 11 12 13 14 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에 저장
113
4 배열 4-2 배열의 초기화 및 사용 프로그램 설명 04 : 7개의 요소를 가진 int형의 배열을 선언하고 초기화 과정을 하나의 문장으로 기술하였다. 05 : 최댓값을 저장하는 max 변수에 첫 번째 요소(score[0]) 값을 저장하였다. 06 : 배열의 length 속성을 이용하여 조건문을 작성하였다. 배열의 첫 번째 요소가 이미 max 변수에 저장되었으므로, 배열의 두 번째 요소부터 비교하기 위해 i 변숫값을 1로설정하였다. 08~09 : max 변수의 값과 배열의 각 요소를 비교하여 큰 값을 max에 저장하였다.
114
4-2 배열의 초기화 및 사용 실습예제 4 배열 다음 프로그램은 String형의 배열을 사용하는 프로그램이다.
ArraysOneDTest3.java 01 02 03 04 05 06 07 08 09 public class ArraysOneDTest3 { public static void main(String args[]) { String weekly_days[] = {"월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"}; System.out.println("제일 좋아하는 요일은 " + weekly_days[5] + " 입니다."); } 배열을 선언하고 직접 초기화 배열의 6번째 요소를 출력
115
4-2 배열의 초기화 및 사용 프로그램 설명 4 배열 04 : 문자열의 배열을 선언하고 직접 초기화를 수행한다.
04 : 문자열의 배열을 선언하고 직접 초기화를 수행한다. 06 : 문자열 배열의 6번째 요소를 출력한다.
116
4-2 배열의 초기화 및 사용 실습예제 4 배열 MultiArrayTest1.java 01 02 03 04 05 06 07
08 09 10 11 12 13 14 15 16 17 18 19 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++; } System.out.print(two_array[i][j] + " "); System.out.println(); 10개의 요소를 가진 int형 배열 선언 배열의 각 요소에 1~20까지 저장 하나의 행을 한 라인에 출력
117
4 배열 4-2 배열의 초기화 및 사용 프로그램 설명 04 : 4*5개의 행과 열을(20개 요소) 가진 2차원 배열을 선언한다. 06~10 : 내포된 두 개의 for문을 이용하여 배열의 각 요소에 정수 값을 저장한다. 1부터 20까지가 저장된다. 14~15 : 두 개의 반복문을 이용하여 배열 요소 값을 출력한다. 한 행에 5개의 값을 옆으로 출력한다. 16 : 라인을 바꾼다
118
4 배열 4-2 배열의 초기화 및 사용 실습예제 다음 프로그램은 2차원 배열에서 각 행의 요소 수를 다르게 생성하여 사용하는 예이다. 자바에서 2차원 배열은 1차원 배열 여러 개를 배열로 선언한 것과 같다. 2차원 배열에서 length 속성은 배열의 행의 개수를 반환한다. 각 행의 열(요소)의 개수를 알기 위해서는 각 행의 이름에 length 속성을 사용해야 한다. MultiArrayTest2.java 01 02 03 04 05 06 07 08 09 10 11 12 13 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번째 행의 길이 출력
119
4-2 배열의 초기화 및 사용 실습예제 4 배열 MultiArrayTest2.java 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 +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(j=0 ; j< twoD[i].length; j++) System.out.print(twoD[i][j] + " "); System.out.println(); length 속성을 사용하여 조건절 지정
120
4 배열 4-2 배열의 초기화 및 사용 프로그램 설명 04 : 2차원 배열은 1차원 배열의 배열로 정의할 수 있다. 각각 서로 다른 길이를 가진 1차원 배열 여러 개를 사용하여 2차원 배열을 구성할 수 있다. 05~08 : 2차원 배열의 각 행에 1차원 배열을 선언한다. 길이를 서로 다르게 지정할 수 있다. 09 : 2차원 배열에서 배열 이름을 이용한 length 속성은 행의 개수를 반환한다. 10 : 2차원 배열에서 각 행의 길이를 출력하려면 각 행의 length 속성을 사용한다. 20~21 : length 속성을 사용하여 반복문의 조건절을 지정하였다.
121
4 배열 4-2 배열의 초기화 및 사용 실습예제 다음 프로그램은 3차원 배열을 사용하는 예를 보이고 있다. 자바에서 3차원 배열은 2차원 배열을 여러 개 사용하여 구성한다고 생각하면 된다. 즉 int[3][4][5]로 구성된 3차원 배열은 2차원 배열 int[4][5]가 3개 있다고 생각하면 되고, 2차원 배열 int[4][5]는 1차원 배열 int[5]가 4개 있다고 생각하면 된다. 다음 프로그램은 3차원 배열을 생성하고 배열의 요소를 초기화한 다음 출력하는 프로그램이다. MultiArrayTest3.java 01 02 03 04 05 06 07 08 09 10 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차원 배열) 선언
122
4-2 배열의 초기화 및 사용 실습예제 4 배열 MultiArrayTest3.java 11 12 13 14 15 16 17
18 19 20 21 22 23 24 25 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();
123
4-2 배열의 초기화 및 사용 프로그램 설명 4 배열 04 : 60개의 요소를 가진 3*4*5 3차원 배열을 선언하였다.
04 : 60개의 요소를 가진 3*4*5 3차원 배열을 선언하였다. 06~08 : 3개의 내포된 반복문을 사용하여 배열을 초기화하였다. 각 배열의 length 속성을 사용하여 조건절을 구성하였다.
124
학습정리 자바 프로그램의 선택 논리
125
학습정리 자바 프로그램의 선택 논리
126
학습정리 자바 프로그램의 선택 논리
127
학습정리 자바 프로그램의 선택 논리
128
학습정리 자바 프로그램의 반복 논리
129
학습정리 제어의 이동 ▒ 반복문이나 switch문 내에서 break문을 사용하면 제어가 반복문과 switch문 밖으로 이동된다. continue문은 제어를 반복문의 처음으로 이동시킨다. return문은 실행을 중단하고 제어를 호출한 곳으로 이동시킨다. 배열 자바의 배열을 사용하기 위해서는 반드시 선언과정과 생성과정이 필요하다. 자바에서 배열의 선언과 생성, 초기화를 하나의 문장으로 사용할 수 있다. int[] number = { 127, 33, 754, 282 }; 자바에서 2차원 배열은 1차원 배열 여러 개를 묶어 놓은 형태이다. 3차원 배열은 2차원 배열을 여러 개 사용하여 구성한다
130
4장. 자바의 기본 구조 II : 선택, 반복, 배역 수고하셨습니다. 질문 있습니까?
Similar presentations