440 likes | 619 Views
Java 실습. 사칙연산. 다음의 코드를 입력하고 실행시켜 보자 . public class SampleD2L3 { public static void main(String args[]) { System.out.println(1 + 1); System.out.println(10 - 3); System.out.println(6 * 5); System.out.println(20 / 2); } }. 연습.
E N D
사칙연산 • 다음의 코드를 입력하고 실행시켜 보자. public class SampleD2L3 { public static void main(String args[]) { System.out.println(1 + 1); System.out.println(10 - 3); System.out.println(6 * 5); System.out.println(20 / 2); } }
연습 • 다음 연산을 하고 결과를 화면에 표시하는 프로그램을 작성하라. 단, 클래스 이름은 ExerD2L3라 하라. • 10 + 5 • 3 8 • 150 5 • 5120 - 650
문자열 연결 : + • 다음의 코드를 입력하고 실행시켜 보자 public class SampleD2L4 { public static void main(String args[]) { System.out.println("abc"); System.out.println("def"); System.out.println("abc" + "def"); } }
연습 • ‘내 이름은 ‘이라는 문자열과 ‘O O O입니다.’라는 문자열을 ‘+’를 이용하여 연결하여 화면에 출력하는 프로그램을 작성하라.
변수 • 변수명으로 대소문자는 구분됨 예) intA, INTA • 예약어는 변수로 사용할 수 없음 예) public, static, class, void 등 • 데이터 형 • byte: 8비트 정수 -float: 32비트 부동소수점 • short: 16비트 정수 -double: 64비트 부동소수점 • int: 32비트 정수 -char: Unicode문자(16비트) • long: 64비트 정수 -boolean: 1비트
변수의 사용 • 다음 코드를 입력하고 실행시켜 보자. public class SampleD2L5 { public static void main(String args[]) { // 변수 선언 int intA; int intB; char chrA; // 변수에 값을 대입 intA = 10; intB = 2; chrA = 'a'; // 콘솔 상에 메시지 표시 System.out.println("intA에는" + intA + "가 들어가 있습니다"); System.out.println("intB에는" + intB + "가 들어가 있습니다"); System.out.println("chrA에는" + chrA + "가 들어가 있습니다"); System.out.println("intA + intB = " + (intA + intB)); System.out.println("intA - intB = " + (intA - intB)); } }
연습 • Int 형의 변수 intX와 char 형의 변수 charY를 선언하여 적당한 값을 대입한 뒤 화면에 출력하는 프로그램을 작성하라.
객체지향 프로그래밍 • 클래스 • 객체의 설계도 • 해당 객체가 어떤 성질(=필드)과 기능(=메소드)을 가지고 있는지 자세하게 정의 • 예) • 옷본: 클래스 • 색 및 소재가 다른 각각의 정장: 객체 • 자바 API • 프로그램 작성시 자주 이용되는 기능들이 클래스 형태로 내장되어 있음
객체 참고형 변수 • 일반 데이터 형(int, char 등)의 변수처럼 사용 가능 • 형식 • 형 이름 (=클래스 이름) 변수명; • 예) String strMessage;
객체의 사용 • 다음 프로그램을 입력하고 수행시켜보라 public class SampleD3L1 { public static void main(String args[]) { String strMessage; strMessage = "String 클래스를 사용한 메시지"; System.out.println(strMessage); } }
연습 • “Java, 정말 재미있다!”라는 메시지를 대입한 String 클래스의 객체를 작성하여 이것을 화면상에 표시하는 프로그램을 작성하라.
변수 안의 문자 길이를 세는 메소드 • String 클래스의 length() 메소드 • 다음 코드를 입력하여 수행시켜 보라. public class SampleD3L2 { public static void main(String args[]) { String strMessage ; strMessage = "String 클래스를 사용한 메시지"; System.out.println(strMessage); System.out.println("strMessage에는" + strMessage.length() + "개의 문자가 포함되어 있습니다."); } }
연습 • String 클래스형 변수를 myMessage라는 이름으로 선언한 후 “클래스는 필드와 메소드를 가지고 있습니다.”라는 문자열을 대입하라. 아울러 해당 문자열을 화면에 출력하고 문자열의 길이를 출력하는 프로그램을 작성하라.
toUpperCase 메소드 • 원래 문자열 중 소문자를 대문자로 변환하여주는 String 클래스의 메소드 public class SampleD3L3 { public static void main(String args[]) { String strMessage ; strMessage = "abcdefg"; System.out.println("strMessage에는" + strMessage + "라는 문자열이 들어 있습니다"); System.out.println("strMessage의 내용을 대문자로 변환하면," + strMessage.toUpperCase() + "가 됩니다."); } }
연습 • 당신의 이름을 알파벳 소문자로 String 클래스의 변수에 저장한 후 대문자로 변환하여 출력해주는 프로그램을 작성하시오.
클래스 메소드 및 인스턴스 메소드 • 인스턴스 메소드 • 클래스의 객체를 생성하고 이 객체를 통해 메소드를 호출하는 방식 • 클래스 메소드 • 클래스의 인스턴스를 생성하지 않고 ‘클래스이름.메소드이름’의 형태로 메소드를 호출하는 방식 예) System.out.println(“-5의 절대치는”+ Math.abs(-5) + “입니다.”);
절대치 표시 프로그램 • 다음 코드를 입력하고 수행시켜 보라 public class SampleD3L4 { public static void main(String args[]) { System.out.println("-5의 절대치는" + Math.abs(-5) + “이다."); } }
연습 • 다음 값의 절대치를 구하여 화면에 출력하는 프로그램을 작성하라 • -27.8 • -999 • -23670 • -6.12345 • -169785318
Constructor 방식의 인스턴스 생성 • 클래스의 인스턴스를 생성하기 위해 사용하는 특별한 메소드 • = 기호를 사용하지 않고 인스턴스를 생성 • 형식 • new 클래스 이름 (인자-필요할 경우 적음) 예) String myStr = new String(“AAA”)’;
Math 클래스의 다른 메소드 • Math.sqrt(수치): 평방근 • Math.pow(a, b): a의 b승 • Math.round(수치): 주어진 인자에 제일 가까운 정수를 반환
연습 • Math 클래스의 메소드를 사용하여 다음을 계산하여 출력하는 프로그램을 작성하라. • 64의 평방근 • 14의 제곱 • 20의 평방근 • 68.254의 가장 가까운 정수치 • 3의 칠승
패키지 • 자바 클래스를 넣어 두는 것 • 서로 관련된 클래스를 하나의 패키지에 담음 • 클래스 이름의 중복 가능성을 방지 예) peternorton.clsFoo, global.clsFoo 패키지 이름 클래스 이름
패키지의 사용 • import java.io.BufferedReader; • import java.io.*; • java.lang에 속하는 클래스를 사용할 때는 import 문으로 선언하지 않아도 됨 System 클래스, String 클래스, Math 클래스
인사말 프로그램 • 다음 프로그램을 입력하고 수행시켜 보라. // 클래스 로드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class SampleD4L1 { public static void main(String args[]) { 콘솔 상에서 키보드로 문자 입력 // 입력 데이터를 읽어 들이는 객체를 생성 BufferedReader myReader = new BufferedReader(new InputStreamReader(System.in), 1); try{ // 이름 입력을 요구한다 System.out.println("이름을 입력해 주십시오 :"); // String 클래스형의 변수를 선언하고, 읽어 들인 데이터를 대입 String myString = myReader.readLine(); // 메시지를 연결하여 표시 System.out.println(myString + "씨, 안녕하세요!"); // 에러 처리 블록 }catch (IOException e) { } } }
연습 • ‘좋아하는 음식은 무엇입니까?’라는 메시지를 표시하여 사용자로부터 입력을 요구한 후, 입력된 데이터를 가지고 ‘당신이 좋아하는 음식은 XXX죠?’라는 메시지를 표시하는 프로그램을 작성하라. 단, XXX에는 사용자가 입력한 데이터를 표시하라.
예외 • 예외란? • 예상치 못한 에러 예) • 열려는 파일이 지정한 디랙토리에 부재 • 수를 0으로 나누기 • 입출력 시스템에 문제 발생 • 예외 클래스로 객체를 생성하여 예외를 처리
예외처리 • 발생 가능성이 있는 예외상태에 대하여 처리를 마련해 두는 것 • 형태 try { 예외를 발생시킬 가능성이 있는 문장들 . . . } catch (발생할_가능성이_있는_예외클래스 객체명) { 예외를 처리해주는 문장들 }
예외 클래스 • 자바 API에 포함됨 • 어떠한 메소드를 부르면 어떠한 예외가 발생하는 지 API 레퍼런스의 끝부분에 명기되어 있음
Integer 클래스의 parseInt 메소드 • String 형의 값을 int 형으로 변환 예) int intA = Integer.parseInt(myString);
덧셈 프로그램 • 다음 코드를 입력하고 수행시켜 보라 import java.io.*; //패키지를 한꺼번에 로드 public class SampleD4L2 { public static void main(String args[]) { //입력 데이터를 읽어들이기 위한 객체 생성 BufferedReader myReader = new BufferedReader(new InputStreamReader(System.in), 1); try{ System.out.println("A+B 의 덧셈을 합니다."); System.out.println("A의 값을 입력해 주십시오"); String myString = myReader.readLine(); //String형으로 읽어들인 값을 형 변환하여 int형의 변수에 대입 int intA = Integer.parseInt(myString); System.out.println("B의 값을 입력해 주십시오"); myString = myReader.readLine(); int intB = Integer.parseInt(myString); int intAnswer = intA + intB; System.out.println("A + B를 계산하면" + intAnswer + "가 됩니다"); //에러 처리 블록 }catch (IOException e) { System.out.println("에러가 발생했습니다"); } } }
연습 • 두 수를 입력 받아 곱셈을 하는 프로그램을 작성하라
Double 클래스의 parseDouble 메소드 • String 형의 값을 double 형으로 변환 예) double dblWeight = Double.parseDouble(myString);
여러 종류의 예외상황에 대한 처리 • 형태 try { 예외를 발생시킬 가능성이 있는 문장들 . . . } catch (발생할_가능성이_있는_예외클래스1 객체명) { 예외를 처리해주는 문장들 } catch (발생할_가능성이_있는_예외클래스2 객체명) { 예외를 처리해주는 문장들 } . . . . . .(필요한 만큼 반복)
BMI(Body Mass Index)의 계산 • BMI = 체중 / 신장의 제곱 * 10000 • 22: 표준 • > 22: 비만형 • < 22: 마른형 • 다음 프로그램을 입력하고 수행하라
BMI import java.io.* ; public class SampleD4L3 { public static void main(String args[]) { BufferedReader myReader = new BufferedReader( new InputStreamReader(System.in), 1) ; try { System.out.println("당신의 BMI를 계산합니다.") ; System.out.println("신장을 입력해 주십시오.") ; String myString = myReader.readLine( ) ; //String형으로 읽어들인 값을 double형의 변수에 대입 double dblHeight = Double.parseDouble(myString) ; System.out.println("체중을 입력해 주십시오.") ; myString = myReader.readLine ( ) ; double dblWeight = Double.parseDouble(myString) ; long lngAnswer = Math.round(dblWeight / Math.pow(dblHeight , 2) * 10000) ; System.out.println("당신의 BMI는" + lngAnswer + "입니다.") ; System.out.println(" BMI가 22를 넘으면 비만기입니다."); //에러 처리 블록(IO 에러) }catch (IOException e) { System.out.println("IO 에러가 발생했습니다.") ; //에러 처리 블록(NumberFormat 에러) }catch (NumberFormatException ne) { System.out.println("입력된 수치가 올바르지 않은 것 같습니다.") ; } } }
연습 • 앞의 프로그램을 기초로 신장을 입력 받아 표준 체중을 구하는 프로그램을 작성하라. • 단, 수식은 22 * 신장의 제곱 / 10000
배열의 사용 • 선언 형식 • 형_이름 변수_이름[]; • 배열 인스턴스 생성 형식 • 변수_이름 = new 형_이름[요소 수] • 배열도 일종의 객체로 간주 예) String myString[]; myString [ ] = new String [5]; • 혹은 한꺼번에 String myString [ ] = new String [5];
배열 및 for 루프 //메인 루틴 for (intCounter = 0 ; intCounter<=1 ; intCounter++) { //문제 표시 System.out.println(strQuestion[intCounter]) ; //답 입력을 재촉 System.out.println("답은? :") ; //입력된 값을 읽어 들여 변수에 대입 String myString = myReader.readLine( ) ; int myAnswer = Integer.parseInt (myString) ; //정오 진단 if (myAnswer == intAnswer[intCounter]) System.out.println("축하합니다! 정답입니다.") ; else System.out.println("유감입니다! 답은" + intAnswer[intCounter] + "입니다.") ; } //에러 처리 블록 }catch (IOException e) { System.out.println("IO에러가 발생했습니다.") ; }catch (NumberFormatException ne) { System.out.println("입력된 수치가 올바르지 않은 것 같습니다.") ; } } } import java.io.* ; public class SampleD5L3 { public static void main(String args[]) { //입력 데이터를 읽어들이기 위한 객체 생성 BufferedReader myReader = new BufferedReader( new InputStreamReader(System.in)) ; try{ //문제·해답용 배열의 선언과 실체화 String strQuestion[] = new String[2] ; int intAnswer[] = new int[2] ; //문제와 답을 배열로 대입 strQuestion [0] ="25 / 5 = ?"; intAnswer[0] = 5; strQuestion [1] ="10 X 3 = ?"; intAnswer[1] = 30; //초기 메시지 표시 System.out.println(“*** 계산 퀴즈 ***") ; System.out.println("문제에 답하시오.") ; //카운터 변수의 선언과 초기화 int intCounter = 0 ;
연습 • 다음과 같은 계산 퀴즈 프로그램을 작성하라. • 문제: 10*50 / 정답: 500 • 문제: 21 – 7 / 정답: 14 • 문제: 360 6 / 정답: 60
Math 클래스의 random 메소드 • 0.0 ~ 1.0 범위의 double 형의 임의의 값을 반환 예) double dblAnswer = Math.random() * 10 • 0 ~ 9 사이의 난수 생성
자바의 형 변환 • 형식 (변환할 형의 이름) 변환할 데이터 예) (int) 3.54 (int) dblAnswer * (int)의 경우 소수부분은 절사
연습 • 컴퓨터가 난수를 생성하면 사람이 그 난수를 맞추는 프로그램을 작성하시오.
//클래스를 한꺼번에 로드 import java.io.* ; public class SampleD5L2 { public static void main(String args[]) { //입력 데이터를 읽어들이기 위한 객체 생성 BufferedReader myReader = new BufferedReader( new InputStreamReader(System.in) , 1) ; try{ //초기 메시지표시 System.out.println("넘버 게임을 시작!") ; System.out.println("컴퓨터가 번호를 선택했슴.") ; //난수를 작성 double dblAnswer = Math.random() * 10; //int형에 형변환 int intAnswer = (int)dblAnswer; //수치 입력을 요구 System.out.println("번호를 맞혀 보세요 (0 9)." ); System.out.println("당신의 예상은:") ; //컴퓨터가 선택한 값을 읽어 들여, 변수에 대입 String myString = myReader.readLine( ) ; int intNumber = Integer.parseInt(myString) ; //시비 판정 if (intNumber == intAnswer) System.out.println("축하합니다! 정답입니다.") ; else System.out.println( "유감! 컴퓨터의 숫자는" + intAnswer ) ; //에러 처리 블록 }catch (IOException e) { System.out.println("IO 에러가 발생했습니다.") ; } catch (NumberFormatException ne) { System.out.println("입력된 수치가 틀립니다.") ; } } } 답