제 3 장 반복문, 배열, 예외처리 1 명품 JAVA Programming. for( 초기문 ; 조건식 ; 반 복후작업 ) {.. 작업문.. }  for 키 워드    for 문의 구성 초기문 조건 식 작업문 반복 후작업 true false for 문이 실행한.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
어서와 Java는 처음이지! 제3장선택과 반복.
10. 예외 처리.
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
어서와 Java는 처음이지! 제4장 배열.
명품 JAVA Essential.
Chapter 7. 조건문.
10장 예외 Lab 10-1.
Lesson 3. 입출력과 제어문.
7장 배열 ②.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
5장 배열 작성자 : 변재현.
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
Lesson 9. 예외처리.
Lesson 6. 형변환.
명품 JAVA Programming.
어서와 Java는 처음이지! 제3장선택과 반복.
5장. 참조 타입.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
3장 자바의 기본문법(2).
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
14. 예외처리.
10장. 예외처리.
자바 5.0 프로그래밍.
11장. 1차원 배열.
C#.
13. 연산자 오버로딩.
3. while문 반복문의 종류 while 문 while( 조건식 )        문장;.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express Slide 1 (of 27)
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
Lesson 4. 수식과 연산자.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
자바 5.0 프로그래밍.
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
[ 단원 04 ] 반복과 배열.
Lecture 02 프로그램 구조 및 문법 Kwang-Man Ko
7주차: Functions and Arrays
C++ 프로그래밍 기초 √ 원리를 알면 IT가 맛있다 3장. 연산자.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
Java Chapter 1 ~ 주차.
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
어서와 C언어는 처음이지 제21장.
Java의 정석 제 8 장 예외처리 (Exception handling) Java 정석 남궁성 강의
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
6 객체.
3장 자바의 기본문법(2).
Presentation transcript:

제 3 장 반복문, 배열, 예외처리 1 명품 JAVA Programming

for( 초기문 ; 조건식 ; 반 복후작업 ) {.. 작업문.. }  for 키 워드    for 문의 구성 초기문 조건 식 작업문 반복 후작업 true false for 문이 실행한 후 오직 한번만 실행되는 초기화 작업 콤마 (‘,’) 로 구분하여 여러 문장 나열 가능 초기할 일이 없으면 비어둘 수 있음 논리형 변수나 논리 연산만 가능 반복 조건이 true 이면 반복 계속, false 이면 반복 종료 반복 조건이 true 상수인 경우, 무한 반복 반복 조건이 비어 있으면 true 로 간주 반복 작업 문장들의 실행 후 처리 작업 콤마 (‘,’) 로 구분하여 여러 문장 나열 가능    2

for 문의 예시 for (i = 0; i < 10; i++) { System.out.print(i); } 0 에서 9 까지 정수 출력 for (i = 0; i < 10; i++) System.out.print(i); for (int i = 0; i < 10; i++) // 변수 i 는 for 문을 벗어나서 사용할 수 없음 System.out.print(i); 반복문에 변수 선언 가능 0 에서 100 까지의 합 구하기 int sum = 0; for (int i = 0; i <= 100; i++) sum += i; int sum = 0; for (int i = 100; i >= 0; i--) sum += i; 3

public class ForSample { public static void main (String[] args) { int i, j; for (j=0,i=1; i <= 10; i++) { j += i; System.out.print(i); if(i==10) { System.out.print("="); System.out.print(j); } else System.out.print("+"); } 예제 3-1 : 1 부터 10 까지 숫자의 합을 출력 for 문을 이용하여 1 부터 10 까지 덧셈을 표시하고 합을 구하시오 =55 4

while( 조건식 ) {.. 작업문.. }   while 문의 구성 조건 식 작업 문 true false 반복 조건이 true 이면 반복, false 이면 반복 종료 반복 조건이 없으면 컴파일 오류 처음부터 반복조건을 통과한 후 작업문 수행  5

import java.util.Scanner; public class WhileSample { public static void main (String[] args) { Scanner rd = new Scanner(System.in); int n = 0; double sum = 0; int i=0; while ((i = rd.nextInt()) != 0) { sum += i; n++; } System.out.println(" 입력된 수의 개수는 " + n + " 개이며 평균은 " + sum / n + " 입니다."); } 예제 3-2 : 입력된 수의 평균 구하기 while 문을 이용하여 키보드에서 숫자를 입력 받아 입력 받은 모든 수의 평균 을 출력하는 프로그램을 작성해보자. 0 이 입력되면 입력이 종료되고 평균을 구하여 출력한다 입력된 수의 개수는 4 개이며 평균은 25.0 입니다. 6

do {.. 작업문.. } while( 조건식 )   do-while 문의 구성 조건 식 작업 문 들 true false 무조건 최소 한번은 실행 반복 조건이 true 이면 반복, false 이면 반복 종료 반복 조건이 없으며 컴파일 오류   7

예제 3-3 : a-z 까지 출력 public class DoWhileSample { public static void main (String[] args) { char a = 'a'; do { System.out.print(a); a = (char) (a + 1); } while (a <= 'z'); } do-while 문을 이용하여 a’ 부터 z’ 까지 출력하는 프로그램을 작성하시오. abcdefghijklmnopqrstuvwxyz 8

중첩 반복 for(i=0; i<100; i++) { // 100 개의 학교 모두의 성적을 더 한다 } for(j=0; j<10000; j++) { // 명의 학생 성적을 더한다 }  중첩 반복  반복문이 다른 반복문을 내포하는 모양  이론적으로는 몇 번이고 중첩 반복 가능  너무 많은 중첩 반복은 프로그램 구조를 복잡하게 하므로 보통 2 중 또 는 3 중 반복 정도가 적당 for 문을 이용한 이중 중첩 구조 9

예제 3-4 : 구구단 public class NestedLoop { public static void main (String[] args) { int i, j; for (i = 1;i < 10; i++,System.out.println()) { for (j = 1;j < 10; j++,System.out.print('\t')) { System.out.print(i + "*" + j + "=" + i*j); } 2 중 중첩된 for 문을 사용하여 구구단을 출력하는 프로그램을 작성하시오. 한 줄에 한 단씩 출력한다. 1*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=9 2*1=22*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=18 3*1=33*2=63*3=93*4=123*5=153*6=183*7=213*8=243*9=27 4*1=44*2=84*3=124*4=164*5=204*6=244*7=284*8=324*9=36 5*1=55*2=105*3=155*4=205*5=255*6=305*7=355*8=405*9=45 6*1=66*2=126*3=186*4=246*5=306*6=366*7=426*8=486*9=54 7*1=77*2=147*3=217*4=287*5=357*6=427*7=497*8=567*9=63 8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=648*9=72 9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81 10

continue 문  continue 문  반복문을 빠져 나가지 않으면서 특정 값에 대해 반복문 내의 실행 문을 건너 뛸 때 사용 for ( 초기문 ; 조건식 ; 반복후 작업 ) { continue; } while ( 조건식 ) { continue; } do { continue; } while ( 조건 식 ); 11

예제 3-5 : 1 부터 100 까지 짝수의 합 public class ContinueExample { public static void main (String[] args) { int sum = 0; for (int i = 1; i <= 100; i++) { if (i%2 == 1) continue; else sum += i; } System.out.println("1 부터 100 까지 짝수의 합은 " + sum); } for 문을 사용하여 1 부터 100 까지 짝수의 합을 구해보자. 1 부터 100 까지 짝수의 합은

break 문  break 문  반복문을 완전히 빠져 나갈 때 사용  break 문은 하나의 반복문만 벗어남 중첩 반복의 경우 안쪽 반복문이 break 문을 포함하고 있으면 안쪽 반복문만 벗어남 13

예제 3-6 : 입력된 숫자 개수 세기 while 문과 break 문을 사용하여 -1 이 입력될 때까지 입력된 숫자의 개수를 출 력하시오. import java.util.Scanner; public class BreakExample { public static void main (String[] args) { Scanner in = new Scanner(System.in); int num = 0; while (true) { if (in.nextInt() == -1) break; num++; } System.out.println(" 입력된 숫자 개수는 " + num); } 입력된 숫자 개수는 4 14

배열이란 ?  배열 (array)  인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료 구조  배열에는 같은 종류의 데이터들이 순차적으로 저장하는 공간  인덱스는 0 부터 시작  인덱스는 배열의 시작 위치에서부터 데이터가 저장되어 있는 상 대적인 위치  배열을 이용하면 한 번에 많은 메모리 공간 선언 가능  배열은 같은 데이터 타입들이 순차적으로 저장되어 있어 반복문 을 이용하여 처리하기에 가장 적합한 자료 구조 15

자바 배열의 필요성과 모양 int i0, i1, i2, i3, i4, i5, i6, i7, i8, i9; i0 i1 i2 i3 i4 i5 i6 i7 i8 i int i[] = new int[10]; i[0] i[1] i[2] i[3] i[4] i[5] i[6] i[7] i[8] i[9] sum= i0+i1+i2+i3+i4+i5+i6+i7+i8+i9; for(sum=0, n=0; n<10; n++) sum += i[n]; i (1) 10 개의 정수형 변수를 선언하는 경우 (1) 10 개의 정수로 구성된 자바 배열을 선언하는 경우 16 i[8] i[9] i[7] i[8] i[9] i[6] i[7] i[8] i[9] i[5] i[6] i[7] i[8] i[9] i[4] i[5] i[6] i[7] i[8] i[9] i[3] i[4] i[5] i[6] i[7] i[9] i[2] i[3] i[4] i[5] i[6] i[7] i[9] i[1] i[2] i[3] i[4] i[5] i[6] i[7] i[9] i[1] i[2] i[3] i[4] i[5] i[6] i[7] i[9] i[0] i[1] i[2] i[0] i[1] i[3] i[2] i[0] i[1] i[4] i[3] i[2] i[0] i[1] i[5] i[4] i[3] i[2] i[0] i[1] i[6] i[5] i[4] i[3] i[2] i[0] i[1] i[7] i[6] i[5] i[4] i[3] i[2] i[0] i[1] i[8] i[7] i[6] i[5] i[4] i[3] i[2] i[0] i[1] i[9] i[8] i[7] i[6] i[5] i[4] i[3] i[2] i[0] i[1]

일차원 배열의 선언  배열 선언  배열 생성  배열 선언, 생성  배열 선언, 생성, 초기화 intintArray[]; charcharArray[]; floatfloatArray[]; intArray = new int[10]; charArray = new char[20]; floatArray = new float[5]; int intArray[] = {0,1,2,3,4,5,6,7,8,9}; 17

배열 선언과 생성의 차이 intArray (1) 배열에 대한 레퍼런스 변수 intArray 선언 (2) 배열 생성 intArray[0] intArray[1] intArray[2] intArray[3] intArray[4] intArray = new int [5]; 배열 생성 원소 개수 타입 배열에 대한 레퍼런스 변수 배열 타입배열에 대한 레퍼런스 변수 int intArray [] ; 배열선언 18

배열을 초기화하면서 생성한 결과 intArray intArray[0] intArray[1] intArray[2] intArray[3] intArray[4] floatArray floatArray[0] floatArray[1] floatArray[2] floatArray[3] int intArray[] = {4, 3, 2, 1, 0}; float floatArray[] = {0.01, 0.02, 0.03, 0.04}; 19

배열 참조 intArray int intArray[] = new int[5]; int myArray[] = intArray; myArray intArray 2 intArray[1] = 2; myArray[1] = 6; myArray 6 * 생성된 하나의 배열을 다수의 레 퍼런스가 참조 가능 20

배열 접근 방법  배열 원소 접근  반드시 배열 생성 후 접근  배열 변수명과 [] 사이에 원소의 인덱스를 적어 접근  배열의 인덱스는 0 부터 시작  배열의 마지막 항목의 인덱스는 ( 배열 크기 – 1) int intArray[]; intArray = new int[10]; intArray[3]=6; // 배열에 값을 저장 int n = intArray[3]; // 배열로부터 값을 읽음 int intArray []; intArray[4] = 8; // 오류, intArray 가 초기화되 어 있지 않음 21

예제 3-7 : 배열에 입력받은 수 중 제일큰수 찾기 키보드에서 입력 받은 정수 5 개를 배열에 저장하고 제일 큰 수를 화면에 출 력하는 프로그램을 작성하시오. import java.util.Scanner; public class ArrayAccess { public static void main (String[] args) { Scanner in = new Scanner(System.in); int intArray[] = new int[5]; int max = 0; for (int i = 0; i < 5; i++) { intArray[i] = in.nextInt(); if (intArray[i] > max) max = intArray[i]; } System.out.print(" 입력된 수에서 가장 큰 수는 " + max + " 입니다."); } 입력된 수에서 가장 큰 수는 100 입니다. 22

배열의 크기와 인덱스  인덱스  인덱스는 0 부터 시작하며 마지막 인덱스는 ( 배열 크기 -1) 이다.  인덱스는 정수 타입만 가능  배열의 크기  배열의 크기는 배열 레퍼런스 변수를 선언할 때 결정되지 않음  배열의 크기는 배열 생성 시에 결정되며, 나중에 바꿀 수 없다.  배열의 크기는 배열의 length 라는 필드에 저장되어 있다. int intArray = new int[5]; int n = intArray[-2]; // 실행 오류. -2 는 인덱스로 적합 하지 않음 int m = intArray[5]; // 실행 오류. 5 는 인덱스의 범위 (0~4) 를 넘었음 int size = intArray.length; 23

배열은 객체로 관리 intArray int intArray []; intArray = new int[5]; int size = intArray.length; // size 는 5 int length 5 객체 intArray[0] 24

예제 3-8 : 배열 원소의 평균 구하기 배열의 length 필드를 이용하여 배열 크기만큼 키보드에서 정수를 입력 받고 평균을 구하는 프로그램을 작성하시오. import java.util.Scanner; public class ArrayLength { public static void main (String[] args) { Scanner in = new Scanner(System.in); int intArray[] = new int[5]; double sum = 0; for (int i = 0; i < intArray.length; i++) intArray[i] = in.nextInt(); for (int i = 0; i < intArray.length; i++) { sum += intArray[i]; } System.out.print(" 배열 원소의 평균은 " + sum/intArray.length + " 입니다."); } 배열 원소의 평균은 30.0 입니다. 25

2 차원 배열  2 차원 배열 선언  2 차원 배열 생성  2 차원 배열 선언, 생성  2 차원 배열 선언, 생성, 초기화 intintArray[][]; charcharArray[][]; floatfloatArray[][]; intArray = new int[2][5]; charArray = new char[5][5]; floatArray = new float[5][2]; intintArray[] = new int[2][5]; charcharArray[] = new char[5][5]; floatfloatArray[] = new float[5][2]; int intArray[][] = {{0,1,2},{3,4,5},{6,7,8}}; char charArray[][] = {{'a', 'b', 'c'},{‘d'.'e','f'}}; float floatArray[][] = {{0.01, 0.02}, {0.03, 0.04}}; 26

2 차원 배열의 length 필드  2 차원 배열의 length  i.length -> 2 차원 배열의 행의 개수로서 2  i[n].length 는 n 번째 행의 열의 개수 i[0].length -> 0 번째 행의 열의 개수로서 5 i[1].length -> 1 번째 행의 열의 개수로서 역시 5 i[0][0]i[0][1]i[0][2]i[0][3]i[0][4] i[1][0]i[1][1]i[1][2]i[1][3]i[1][4] int i[][] = new int[2][5]; int size1 = i.length; //2 int size2 = i[0].length; //5 i[1] i i[0] length

예제 3-9 : 3 년간 매출 총액과 평균 구하기 public class SalesRevenue { public static void main (String[] args) { int intArray[][] = {{90, 90, 110, 110}, {120, 110, 100, 110}, {120, 140, 130, 150}} ; double sum = 0; for (int i = 0; i < intArray.length; i++) for (int j = 0; j < intArray[i].length; j++) sum += intArray[i][j]; System.out.println(" 지난 3 년간 매출 총액은 " + sum + " 이며 연평균 매출은 " + sum/intArray.length + " 입니다."); } 한 회사의 지난 3 년간 분기별 매출의 총액과 연평균 매출을 구하는 프로그램 을 작성하시오. 지난 3 년간 매출 총액은 이며 연평균 매출은 입니다. 28

메소드에서 배열 리턴  메소드가 리턴하는 배열  메소드가 리턴하는 배열의 타입과 차원은 리턴받는 배열 레퍼런 스의 타입과 차원에 일치해야 함  리턴 타입에 배열의 크기를 지정하지 않음 int [] makeArray() { int temp [] = new int [4]; return temp; } 리턴 타입 메소드 이름 배열 리턴 29

예제 3-11 : 배열 리턴 예제 public class ReturnArray { static int[] makeArray() { int temp[] = new int[4]; for (int i=0;i<temp.length;i++) temp[i] = i; return temp; } public static void main (String[] args) { int intArray []; intArray = makeArray(); for (int i = 0; i < intArray.length; i++) System.out.println(intArray[i]); } 배열을 생성하고 각 원소 값을 출력하는 프로그램을 작성하시오. 배열 생성은 배 열을 생성하여 각 원소의 인덱스 값으로 초기화하여 반환하는 메소드를 이용한다

main() 메소드  main() 의 메소드 특징  자바 응용프로그램은 main() 에서 부터 시작  public 속성  static 속성  리턴 타입은 void  인자는 문자열 배열 (String []) 로 전달 public static void main(String [] args) { } 다른 클래스에서 메소드 접근 허용 객체 생성 전부 터 호 출 가 능 리턴 값 없음 문자열 배열인자인자 31

main(string [] args) 메소드의 인자 전달 C:\>java Hello abc 3 % 5.7 “abc” “3” “%” “5.7” 생성 class Hello public static void main(String[] args) { String a = args[0]; // a 는 "abc" String b = args[1]; // b 는 "3" String c = args[2]; // c 는 "%" String d = args[3]; // d 는 "5.7" } args args.length => 4 args[0] => “abc” args[1] => “3 args[2] => “%” args[3] => “5.7” 32

이클립스에서 main() 메소드의 인자전달  Run 메뉴의 Run Configurations 항목에서 main() 메소드 의 인자를 나열 33

main() 의 인자 이용 예 public class Calc { public static void main(String[] args) { int sum = 0; for(int i=0; i<args.length; i++) { // 명령행 인자의 개수만큼 반복 int n = Integer.parseInt(args[i]); // 명령행 인자인 문자열을 정수로 변환 sum += n; // 숫자를 합한다. } System.out.println("sum = " + sum); } 34

예제 3-12 : main() 의 인자들을 받아서 평균값을 계산하는 예제 public class MainParameter { public static void main (String[] args) { double sum = 0.0; for (int i=0; i<args.length; i++) sum += Double.parseDouble(args[i]); System.out.println(" 합계 :" + sum); System.out.println(" 평균 :" + sum/args.length); } 실수를 main() 메소드 인자로 전달받아 평균값을 구하는 프로그램을 작성하시오. 35

자바의 예외 처리  예외 (Exception)  실행 중 발생하는 에러는 컴파일러가 알 수 없다.  실행 중 에러 발생 시 예외를 발생시켜 예외 처리함 예외를 처리하지 않으면 예외가 발생한 프로그램은 강제 종료 import java.util.Scanner; public class ExceptionExample1 { public static void main (String[] args) { Scanner rd = new Scanner(System.in); int divisor = 0; int dividend = 0; System.out.print(" 나뉨수를 입력하시오 :"); dividend = rd.nextInt(); System.out.print(" 나눗수를 입력하시오 :"); divisor = rd.nextInt(); System.out.println(dividend+" 를 "+divisor+" 로 나누면 몫은 "+dividend/divisor+" 입니 다."); } 나뉨수를 입력하시오 :100 나눗수를 입력하시오 :0 Exception in thread "main" java.lang.ArithmeticException: / by zero at ExceptionExample1.main(ExceptionExample1.java:12) 36

try-catch-finally 문  예외 처리문  try-catch-finally 문 사용  finally 는 생략 가능 try { 예외가 발생할 가능성이 있는 실행문 (try 블 록 ) } catch ( 처리할 예외 타입 선언 ) { 예외 처리문 (catch 블록 ) } finally { // finally 는 생략 가능 예외 발생 여부와 상관없이 무조건 실행되 는 문장 (finally 블록 ) } 생략 가능 37

예외가 발생한 경우와 예외가 발생하지 않은 경 우 실행 과정 try {.... 실행문.... } catch ( 처리할 예외 타입 선 언 ) { 예외 처리문 } finally { finally 블록 문 } try {.... 실행문.... } catch ( 처리할 예외 타입 선 언 ) { 예외 처리문 } finally { finally 블록 문 } 에외 발생 try 블럭에서 예외가 발생하지 않은 정상적인 경우 try 블럭에서 예외가 발생한 경우 38

자주 발생하는 예외 39

예제 3-13 : 두 정수의 나눗셈에서 ArithmeticException 을 처리하도록 수정된 예 import java.util.Scanner; public class ExceptionExample2 { public static void main (String[] args) { Scanner rd = new Scanner(System.in); int divisor = 0; int dividend = 0; System.out.print(" 나뉨수를 입력하시오 :"); dividend = rd.nextInt(); System.out.print(" 나눗수를 입력하시오 :"); divisor = rd.nextInt(); try { System.out.println(dividend+" 를 "+divisor+" 로 나누면 몫은 "+ dividend/divisor+" 입니다."); } catch (ArithmeticException e) { System.out.println("0 으로 나눌 수 없습니다."); } try-catch 문을 이용하여 정수를 0 으로 나누려고 할 때 "0 으로 나룰 수 없습니다." 라 는 경고 메시지를 출력하도록 프로그램을 작성하시오. 나뉨수를 입력하시오 :100 나눗수를 입력하시오 :0 0 으로 나눌 수 없습니다. 40

예제 3-14 : 범위를 벗어난 배열의 접근 public class ArrayException { public static void main (String[] args) { int[] intArray = new int[5]; intArray[0] = 0; try { for (int i = 0; i < 5; i++) { intArray[i+1] = i+1 + intArray[i]; System.out.println("intArray["+i+"]"+"="+intArray[i]); } catch (ArrayIndexOutOfBoundsException e) { System.out.println(" 배열의 인덱스가 범위를 벗어났 습니다."); } 배열의 인덱스가 범위를 벗어날 때 발생하는 ArrayIndexOutOfBoundsException 을 처리하는 프로그램을 작성하시오. intArray[0]=0 intArray[1]=1 intArray[2]=3 intArray[3]=6 배열의 인덱스가 범위를 벗어났습니다. 41

예제 3-15 : 정수가 아닌 문자열을 정수로 변환할 때 예외 발생 public class NumException { public static void main (String[] args) { String[] stringNumber = {"23", "12", "998", " "}; try { for (int i = 0; i < stringNumber.length; i++) { int j = Integer.parseInt(stringNumber[i]); System.out.println(" 숫자로 변환된 값은 " + j); } catch (NumberFormatException e) { System.out.println(" 정수로 변환할 수 없습니다."); } 문자열을 정수로 변환할 때 발생하는 NumberFormatException 을 처리하는 프로 그램을 작성하라. 숫자로 변환된 값은 23 숫자로 변환된 값은 12 숫자로 변환된 값은 998 정수로 변환할 수 없습니다. 42