10장 예외 Lab 10-1.

Slides:



Advertisements
Similar presentations
7 월 12 일 실습 StockQuoteClient.java MarketClient.java.
Advertisements

5 장 조건과 반복 ②. Contents Counting and Looping [while 문 사용 ] Powers of 2 [while 문 사용 ] More Guessing [do 문 사용 ] Election Day [do 문 사용 ] Finding Maximum &
제 3 장 반복문, 배열, 예외처리 1 명품 JAVA Programming. for( 초기문 ; 조건식 ; 반 복후작업 ) {.. 작업문.. }  for 키 워드    for 문의 구성 초기문 조건 식 작업문 반복 후작업 true false for 문이 실행한.
명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
어서와 Java는 처음이지! 제3장선택과 반복.
프로그래밍 개론 Ⅰ 제 3장. 클래스와 객체의 사용 ①.
제 7주 2015년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
네트워크 프로그래밍 및 실습.
10. 예외 처리.
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
7장 배열 ②.
Java Seminar 6.
컴퓨터 프로그래밍 실습 #7 제 4 장 GUI 클래스 작성.
어서와 Java는 처음이지! 제14장 오류처리하기.
6장 객체-지향 설계 ①.
5 익셉션 처리.
제 4 장 클래스 작성 Lab 4- 2.
파일 입출력에 사용되는 자바 클래스들 JDK 라이브러리의 파일을 다루는 클래스들 파일의 내용을 읽고 쓰는 클래스들
[INA470] Java Programming Youn-Hee Han
Power Java 제4장 자바 프로그래밍 기초.
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
8장 상속 ①.
8장 자바 입출력.
Lesson 3. 입출력과 제어문.
7장 배열 ②.
Power Java 제10장 배열.
Power Java 제15장 예외 처리 (Exception Handling).
01. 직렬화와 역직렬화에 대하여 객체의 직렬화 직렬화와 역직렬화
Lesson 9. 예외처리.
어서와 Java는 처음이지! 제3장선택과 반복.
명품 Java Programming.
Chap07 예외 처리 7.1 예외의 개요 7.2 예외 관련 클래스 7.3 예외 처리.
5장 조건과 반복 ①.
7장 배열 ①.
명품 JAVA Essential.
제 4 장 클래스 작성 4-1 LAB.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
6장 객체-지향 설계 ①.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
명품 JAVA Programming.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
5장 조건과 반복 ②.
제2장 데이터 및 수식.
Linux/UNIX Programming
6장 객체-지향 설계 ①.
어서와 Java는 처음이지! 제4장 배열 IT응용시스템공학과 김형진 교수.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Linux/UNIX Programming
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
DataScience Lab. 박사과정 김희찬 (월)
[INA470] Java Programming Youn-Hee Han
자바 5.0 프로그래밍.
5장 조건과 반복 ①.
JA A V W. 06.
Linux/UNIX Programming
Linux/UNIX Programming
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
제 15 강 문자와 코드 shcho.pe.kr.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
Flow Diagram IV While.
1. 입력 데이터 ② 대학, 학과: 대학이 존재하지 않을 경우 학과명을 대학에 입력 학과명은 공백으로 유지 (하단 참조)
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
어서와 C언어는 처음이지 제21장.
프로그래밍 개론 Ⅰ 제 1장 . 서론 ②.
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
Linux/UNIX Programming
Presentation transcript:

10장 예외 Lab 10-1

목차 예외 문자 개수 세기 예외 처리 파일 I/O 텍스트 파일에 읽고 쓰기.

문자 개수 세기 CountLetters를 실행해본다. 공백과 다른 기호를 포함한 구문을 input으로 하여 실행해본다. ArrayIndexOutOfBoundException발생! Why? 문자가 아닌 것을 처리할 수 있도록 메소드를 수정한다. 첫 번째 for문의 body에 예외를 처리할 수 있도록 try-catch문을 작성한다. Catch문에서 문자가 아닌 것을 제외시킨다.

문자 개수 세기 Cont. //******************************************************* // CountLetters.java // // 사용자로부터 입력받은 단어의 각 문자 수를 세어 출력한다. import java.util.Scanner; public class CountLetters { public static void main(String[] args) int[] counts = new int[26]; Scanner scan = new Scanner(System.in); // 사용자로부터 단어를 입력받는다. System.out.print("Enter a single word (letters only, please): "); String word = scan.nextLine();

문자 개수 세기 Cont. // 대문자로 변환한다. word = word.toUpperCase(); // 각 문자의 개수를 센다. for (int i = 0; i < word.length(); i++) counts[word.charAt(i)-'A']++; // 출력한다. System.out.println(); for (int i = 0; i < counts.length; i++) if (counts[i] != 0) System.out.println((char)(i+'A') + ": " + counts[i]); }

예외 처리 ParseInts를 실행해본다. 주어진 input으로 실행해본다. 프로그램을 수정한다. 10, 20, 30, 40 We have 2 dogs and 1 cat.  NumberFormatException 발생! 프로그램을 수정한다. While문 안에 try-catch문을 추가한다. Input에서 읽은 것이 정수가 아닐 때 에러를 발생하지 않게 한다.

예외 처리 Cont. //******************************************************* // ParseInts.java import java.util.Scanner; public class ParseInts { public static void main(String[] args) int val, sum = 0; Scanner scan = new Scanner(System.in); String line; System.out.println("Enter a line of text"); Scanner scanLine = new Scanner(scan.nextLine()); while(scanLine.hasNext()) val = Integer.parseInt(scanLine.next()); sum += val; } System.out.println("The sum of the integers on this line is " + sum);

텍스트 파일 – 읽고 쓰기 주석에 따라 프로그램을 완성한다. Input 파일로부터 스캐너 객체를 생성한다. FileWriter로부터 Printwriter 객체 outfile을 생성한다. While의 body를 완성한다. 이름, 총 이수시간, 총 이수학점을 읽어와 GPA를 계산한다. GPA = 총 이수학점/ 총 이수시간 학사경고를 받아야 하는 학생이라면 이수시간과 GPA를 outfile에 저장한다. (공백으로 구분)

텍스트 파일 – 읽고 쓰기 Cont. printWriter를 닫는다. 발생할 수 있는 예외 학사 경고의 기준 총 이수시간이 30시간 미만인 경우  1.5 총 이수시간이 60시간 미만인 경우  1.75 그 외  2.0 printWriter를 닫는다. 발생할 수 있는 예외 FileNotFoundException : inputfile이 없는 경우 NumberFormatException : inputfile 형식에 오류 가 있는 경우 IOException : 입력/출력 스트림에 문제가 있는 경우 이 예외를 처리한다. 적절한 메시지를 출력하여 프로그램을 종료 시킴.

텍스트 파일 – 읽고 쓰기 Cont. //******************************************************* // Warning.java // // 텍스트 파일에서 학생 정보를 읽고 다른 텍스트 파일에 정보를 쓴다. import java.util.Scanner; import java.io.*; public class Warning { //--------------------------------------------------- // 텍스트 파일에서 학생 정보를 읽어 GPA를 계산한다. // 만약 학생이 학사 경고를 받아야 한다면 // 다른 텍스트 텍스트 파일에 저장한다. public static void main(String[] args) int creditHrs; // 이수 시간 double qualityPts; // 이수 학점 double gpa; // 학점 평균 String line, name, imputName = "students.dat"; String outputName = "warning.dat";

텍스트 파일 – 읽고 쓰기 Cont. try { // 스캐너를 구성한다. // 출력 스트림을 구성한다. // 출력 파일의 헤더를 출력 outFile.println(); outFile.println("Students on Academic Warning"); // 입력 파일(텍스트 파일)을 읽는다. while() // 이수시간과 이수 학점으로 학사 경고 여부를 결정한다. // 학사 경고를 받아야 한다면 그 학생의 정보를 출력 // 파일에 적는다. }

텍스트 파일 – 읽고 쓰기 Cont. // 출력 파일을 닫는다. } catch (FileNotFoundException exception) { System.out.println("The file " + inputName + " waw not found."); catch (IOException exception) System.out.println(exception); catch (NumberFormatException e) System.out.println("Format error in input file : " + e);