From 75feffcbba72c458c1a6915e799140151b031ed1 Mon Sep 17 00:00:00 2001 From: 1juuun Date: Wed, 18 Jan 2023 17:33:53 +0900 Subject: [PATCH 1/5] =?UTF-8?q?Day01=20=EA=B3=BC=EC=A0=9C=20=EC=A0=9C?= =?UTF-8?q?=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 ++++ .idea/misc.xml | 6 +++ .idea/modules.xml | 8 ++++ .idea/vcs.xml | 6 +++ hanghae-java-study-12.iml | 11 +++++ src/hwj_report/Report01.java | 37 +++++++++++++++ src/hwj_report/Report02.java | 87 ++++++++++++++++++++++++++++++++++++ 7 files changed, 163 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 hanghae-java-study-12.iml create mode 100644 src/hwj_report/Report01.java create mode 100644 src/hwj_report/Report02.java diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..c3f502a --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# 디폴트 무시된 파일 +/shelf/ +/workspace.xml +# 에디터 기반 HTTP 클라이언트 요청 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..03f397c --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..0b0b192 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/hanghae-java-study-12.iml b/hanghae-java-study-12.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/hanghae-java-study-12.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/hwj_report/Report01.java b/src/hwj_report/Report01.java new file mode 100644 index 0000000..cf4b816 --- /dev/null +++ b/src/hwj_report/Report01.java @@ -0,0 +1,37 @@ +package hwj_report; + +public class Report01 { + public static void main(String[] args) { + + //2-4. 다음 중 변수를 잘못 초기화 한 것은? +// byte b = 256; "오류" 원인 : 저장 가능한 값의 범위를 넘어가기 때문 +// char c = ''; "오류" 원인 : 빈 문자열은 선언 가능하지 않기 때문 +// char answer = 'no'; "오류" 원인 : 변수타입 char은 문자 하나만 가능하기 때문 +// float f = 3.14; "오류" 원인 : float 타입 변수에 실수를 할당할 때에는 실수값 뒤에 별도로 f나 F를 추가해야 하기 때문 + double d = 1.4e3f; + + //2-7. 다음 문장들의 출력 결과를 적으세요. 오류가 있는 문장의 경우, '오류' 라고 적으세요. + System.out.println(true+""); + System.out.println('A' + 'B'); + System.out.println('1' + 2); + System.out.println('1' + '2'); + System.out.println('J' +"ava"); + //System.out.println(true + null); 오류 + + + //2-8. 아래는 변수 x, y, z의 값을 서로 바꾸는 예제이다. 결과와 같이 출력되도록 코드를 넣으세요. + int x = 1; + int y = 2; + int z = 3; + + x = x + 1; + y = y + 1; + z = z -2; + + System.out.println("x="+x); + System.out.println("y="+y); + System.out.println("z="+z); + + } + +} diff --git a/src/hwj_report/Report02.java b/src/hwj_report/Report02.java new file mode 100644 index 0000000..a9770ed --- /dev/null +++ b/src/hwj_report/Report02.java @@ -0,0 +1,87 @@ +package hwj_report; + +public class Report02 { + + public static void main(String[] args) { + + byte b = 10; + char ch = 'A'; + int i = 100; + long l = 1000L; + + //3-1. 다음 중 형변환을 생략할 수 있는 것은? (모두 고르시오) + b = (byte)i; + ch = (char)b; + short s = (short)ch; + float f = l; // 정답 + i = (int)ch; // 정답 + + //3-2. 다음 연산의 결과와 그 이유를 적으세요. + int x = 2; + int y = 5; + char c = 'A'; // 'A'의 문자코드는 65 + + System.out.println(y >= 5 || x < 0 && x > 2); + // true 이유 : 먼저 해석하면 5>=5 OR 2 < 0 AND 2 > 2 => 먼저 한 조건이라도 true이기 때문에 true + System.out.println(y += 10 - x++); + // 13 이유 : 15 - 2 + System.out.println(x += 2); + // 5 이유 : 변수 x에 2를 더하자 2+2 = 4 인줄 알았으나 앞 식에서 증가연산자 때문에 x가 1 증가 함 그래서 3+2+=5가 나옴 + System.out.println(!('A' <= c && c <= 'Z')); + // false 이유 : 먼저 괄호안의 식이 먼저 계산되고 마지막에 !에의해 반대로 바뀐다. 두식다 true 이지만, !true = false + System.out.println('C' - c); + // 2 이유 : 피연산자가 int보다 작은 타입(byte, short, char)인 경우 int로 변환한 다음에 연산을 수행한다. c의 값이 'A'이므로 'C'-c는 ‘C'-'A'가 되고 'C'와 'A'는 int로 변환되어 '67 - 65'가 되고 최종결과는 2가 된다. 구글링에서 결과를 찾아봄 + System.out.println('5' - '0'); + // 5 이유 : 위와 마찬가지로 '5'라는 문자코드가 나타내는 숫자 53, '0'을 문자코드가 나타내는 숫자 48 둘을 빼서 + System.out.println(c + 1); + // 66 이유 : A는 문자코드 값이 65라는 결과로 얻게 되므로 연산 되어 66이라는 값이 나온다. + System.out.println(++c); + // B 이유 : 증감 연산자는 형변환이 발생하지 않기에 + System.out.println(c++); + // B 이유 : 증감 연산자는 형변환이 발생하지 않기에 + System.out.println(c); + // C 이유 : B에서 증가해버림 + + + //3-3. 아래는 변수의 num 값 중에서 백의 자리 이하를 버리는 코드이다. + //만일 변수 num의 값이 '456'이라면 '400'이 되고, '111'이라면 '100'이 된다. + //알맞은 코드를 넣으시오. + int num = 456; + + num = num - (num % 100); + + System.out.println(num); + + + //3-4. 아래의 코드는 사과를 담는데 필요한 바구니(버켓)의 수를 구하는 코드이다. + //만일 사과의 수가 123개이고 하나의 바구니에는 10개의 사과를 담을 수 있다면, 13개의 바구니가 필요할 것이다. + //알맞은 코드를 넣으시오. + + int numOfApples = 123; // 사과의 개수 + int sizeOfBucket = 10; // 바구니의 크기(바구니에 담을 수 있는 사과의 개수) + int numOfBucket = Math.round((int)(numOfApples / sizeOfBucket) + 0.5f); // 모든 사과를 담는데 필요한 바구니의 수 + + System.out.println("필요한 바구니의 수 : " + numOfBucket); + + + //3-5. 아래는 변수 num2의 값에 따라 '양수', '음수', '0'을 출력하는 코드이다. + //삼항연산자를 이용해서 빈칸에 알맞은 코드를 넣으시오. + //Hint : 삼항 연산자를 두 번 사용할 것! + int num2 = 10; + System.out.println((num2 > 0) ? "양수" : (num2 < 0) ? "음수" : "0"); + + + //3-6. 아래는 화씨(Fahrenheit)를 섭씨(Celcius)로 변환하는 코드이다. + //변환 공식이 'C = 5/9*(F-32)'라고 할 때, 빈 칸에 알맞은 코드를 넣으시오. + // 단, 변환값은 소수점 셋째자리에서 반올림하며, Math.round() 함수를 사용하지 않고 처리할 것! + int fahrenheit = 100; + float celcius = (int)(5/9f * (fahrenheit-32) * 100 + 0.5) / 100f; // 화씨 계산 할때 소수자리가 나오게 (int)와 f를 + + System.out.println("Fahrenheit: "+fahrenheit); + System.out.println("Celcius: "+celcius); + + + } + + +} From ce831e732b4bd84c037aaf9b5e90b82650ab5fca Mon Sep 17 00:00:00 2001 From: 1juuun Date: Thu, 19 Jan 2023 18:04:07 +0900 Subject: [PATCH 2/5] =?UTF-8?q?Day=2002=20=EA=B3=BC=EC=A0=9C=20=EC=A0=9C?= =?UTF-8?q?=EC=B6=9C=20=ED=95=A9=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hwj_report/Report02.java | 2 +- src/hwj_report/Report03.java | 231 ++++++++++++++++++ src/hwj_report/Report04.java | 146 +++++++++++ ... \355\224\214\353\241\234\354\232\260.png" | Bin 0 -> 55913 bytes 4 files changed, 378 insertions(+), 1 deletion(-) create mode 100644 src/hwj_report/Report03.java create mode 100644 src/hwj_report/Report04.java create mode 100644 "src/hwj_report/\353\241\234\352\267\270\354\235\270 \354\260\250\355\212\270 \355\224\214\353\241\234\354\232\260.png" diff --git a/src/hwj_report/Report02.java b/src/hwj_report/Report02.java index a9770ed..8090da9 100644 --- a/src/hwj_report/Report02.java +++ b/src/hwj_report/Report02.java @@ -75,7 +75,7 @@ public static void main(String[] args) { //변환 공식이 'C = 5/9*(F-32)'라고 할 때, 빈 칸에 알맞은 코드를 넣으시오. // 단, 변환값은 소수점 셋째자리에서 반올림하며, Math.round() 함수를 사용하지 않고 처리할 것! int fahrenheit = 100; - float celcius = (int)(5/9f * (fahrenheit-32) * 100 + 0.5) / 100f; // 화씨 계산 할때 소수자리가 나오게 (int)와 f를 + float celcius = (int)(5/9f * (fahrenheit-32) * 100 + 0.5) / 100f; // 화씨 계산 할때 소수자리가 나오게 (int)와 f를 2번 쓴다. System.out.println("Fahrenheit: "+fahrenheit); System.out.println("Celcius: "+celcius); diff --git a/src/hwj_report/Report03.java b/src/hwj_report/Report03.java new file mode 100644 index 0000000..6dbd5b8 --- /dev/null +++ b/src/hwj_report/Report03.java @@ -0,0 +1,231 @@ +package hwj_report; + +class Report03 { + public static void main(String[] args) { + + System.out.println("Report03"); + } +} + +//4-1. 다음의 문장들을 조건식으로 표현해보세요. + +//int형 변수 x가 10보다 크고 20보다 작을 때 true인 조건식 + // int x < 10 && int x > 20 + +//char형 변수 ch가 공백이나 탭이 아닐 때 true인 조건식 + // !(char ch == ' ' || ch =='\') + +//char형 변수 ch가 'x' 또는 'X'일 때 true인 조건식 + // char ch == 'x' || ch == 'X' + +//char형 변수 ch가 숫자('0'~'9')일 때 true인 조건식 + // char ch >= '0' || ch <= '9' + +//char형 변수 ch가 영문자(대문자 또는 소문자)일 때 true인 조건식 + // (ch <= 'a' && ch >= 'z') || (ch <= 'A' && ch >= 'Z') + +//int형 변수 year가 400으로 나눠떨어지거나 또는 4로 나눠떨어지고 100으로 나눠떨어지지 않을때 true인 조건식 + // year % 400 == 0 || year % 4 == 0 && year % 100 != 0 + +//boolean형 변수 powerOn이 false일 때 true인 조건식 + // !powerOn + +//문자열 참조변수 str이 "yes"일 때 true인 조건식 + // str.equals("yes") + + +//4-2. 1부터 20까지의 정수중에서 2 또는 3의 배수가 아닌 수의 총합을 구하세요. +class Exercise4_2 { + public static void main(String[] args) { + int sum = 0; + + for(int i = 1; i <= 20; i++) { + if(i % 2 != 0 && i % 3 != 0){ + sum += i; + } + } + + System.out.println("sum="+sum); + } +} + + +//4-3. 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하세요. +class Exercise4_3 { + public static void main(String[] args) { + int sum = 0; + int totalSum = 0; + + for(int i = 0; i < 10; i++) { + sum += i + 1; + totalSum += sum; + } + + System.out.println("totalSum="+totalSum); + } +} + + +//4-4. 1+(-2)+3+(-4)+...과 같은 식으로 계속 더해나갔을 때, +//몇까지 더해야 총합이 100 이상이 되는지 구하세요. +class Exercise4_4 { + public static void main(String[] args) { + int sum = 0; // 총합을 저장할 변수 + int s = 1; // 값의 부호를 바꿔주는데 사용할 변수 + int num = 0; + + for (int i = 0; sum < 100; i++) { + s = -s; + num = s * i; + sum += num; + if(sum >= 100) { + break; + } + } + + System.out.println("num="+num); + System.out.println("sum="+sum); + } +} + + + +//4-5. 다음의 for문을 while문으로 변경하세요. +class Exercise4_5 { + public static void main(String[] args) { +// for(int i=0; i<=10; i++) { +// for(int j=0; j<=i; j++) +// System.out.print("*"); +// System.out.println(); +// } + + int i = 0; + while (i <= 10){ + int j = 0; + while (j <= i){ + System.out.print("*"); + j++; + } + System.out.println(); + i++; + } + + }//end of main +} // end of class + + +//4-6. 두 개의 주사위를 던졌을 때, 눈의 합이 6이 되는 모든 경우의 수를 출력하는 프로그램을 작성하세요. +class Exercise4_6 { + public static void main(String[] args) { + + for (int i = 1; i <= 6; i++){ + for (int j = 1; j <= 6; j++){ + if(i + j == 6) { + System.out.println(i + " + " + j +" = "+ (i + j)); + } + } + } + + } +} + + +//4-7. 숫자로 이루어진 문자열 str이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코드를 완성하세요. +//만일 문자열이 "12345"라면, ‘1+2+3+4+5’의 결과인 15를 출력이 출력되어야 합니다.` +class Exercise4_7 { + public static void main(String[] args) { + String str = "12345"; + int sum = 0; + + for (int i = 0; i < str.length(); i++) { + + sum += str.charAt(i) - '0'; // 이해가 되질 않는다 또... + System.out.println(str.charAt(i)); + } + System.out.println("sum=" + sum); + } +}//예상 결과 : sum=15 + + + +//4-8. Math.random()을 이용해서 1부터 6 사이의 임의의 정수를 변수 value에 저장하는 코드를 완성하세요. +class Exercise4_8{ + public static void main(String[] args){ + + int value = (int)(Math.random() * 6) + 1; + + System.out.println("value:"+value); + } +} + + + +//4-9. int 타입의 변수 num이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코드를 완성하세요. +//만일 변수 num의 값이 12345라면, ‘1+2+3+4+5’의 결과인 15를 출력하세요. +//문자열로 변환하지 말고 숫자로만 처리하세요. +class Exercise4_9 { + public static void main(String[] args) { + int num = 12345; + int sum = 0; + + int number1 = num / 10000; + int number2 = num / 1000 - (number1 * 10); + int number3 = num / 100 - (number1 * 100) - (number2 * 10); + int number4 = num / 10 - (number1 * 1000) - (number2 * 100) - (number3 * 10); + int number5 = num / 1 - (number1 * 10000) - (number2 * 1000) - (number3 * 100) - (number4 * 10); + + // for문으로 돌리고 싶은데 어케 하지?? 답답하다 ㅡㅡ +// for(int i = 0; i < 5; i++) { +// sum += num / 10000 +// } + + sum = number1 + number2 + number3 + number4 + number5; + System.out.println("sum="+sum); + } +}//예상 결과 : sum=15 + + +//4-10. 다음은 숫자맞추기 게임을 작성한 것이다. 1과 100사이의 값을 반복적으로 입력해서 +// 컴퓨터가 생각한 값을 맞추면 게임이 끝난다. +// 사용자가 값을 입력하면, 컴퓨터는 자신이 생각한 값과 비교해서 결과를 알려준다. +// 사용자가 컴퓨터가 생각한 숫자를 맞추면 게임이 끝나고 몇 번 만에 숫자를 맞췄는지 알려준다. + +class Exercise4_14 { + public static void main(String[] args) { + // 1~100사이의 임의의 값을 얻어서 answer에 저장한다. + int answer = (int) (Math.random() * 100) + 1; + int input = 0; //사용자입력을 저장할 공간 + int count = 0; //시도횟수를 세기위한 변수 + + // 화면으로 부터 사용자입력을 받기 위해서 Scanner클래스 사용 + java.util.Scanner s = new java.util.Scanner(System.in); + do { + count++; + System.out.print("1과 100사이의 값을 입력하세요 : "); + input = s.nextInt(); //입력받은 값을 변수 input에 저장한다. + if(answer == input) { + System.out.println("맞혔습니다."); + System.out.println("시도횟수는" + count + "번입니다."); + } else if(answer < input) { + System.out.println("더 작은 수를 입력하세요"); + } else { + System.out.println("더 큰 수를 입력하세요"); + } + } while(true); //무한반복문 + } // end of main +} // end of class + +//예상 결과 +//1과 100사이의 값을 입력하세요 : 50 +//더 큰 수를 입력하세요. +//1과 100사이의 값을 입력하세요 : 75 +//더 큰 수를 입력하세요. +//1과 100사이의 값을 입력하세요 : 87 +//더 작은 수를 입력하세요. +//1과 100사이의 값을 입력하세요 : 80 +//더 작은 수를 입력하세요. +//1과 100사이의 값을 입력하세요 : 77 +//더 작은 수를 입력하세요. +//1과 100사이의 값을 입력하세요 : 76 +//맞혔습니다. +//시도횟수는 6번입니다. diff --git a/src/hwj_report/Report04.java b/src/hwj_report/Report04.java new file mode 100644 index 0000000..5c23440 --- /dev/null +++ b/src/hwj_report/Report04.java @@ -0,0 +1,146 @@ +package hwj_report; + +import java.util.Arrays; +import java.util.Random; +import java.util.Scanner; + +class Report04 { + public static void main(String[] args) { + System.out.println("report04"); + } + +} + +class array_exercise { + + public static void main(String[] args) { + //5-1. 다음은 배열을 선언하거나 초기화한 것이다. 잘못된 것을 고르고 그 이유를 설명하세요. + int[] arr1[]; + int[] arr2 = {1, 2, 3,}; + int[] arr3 = new int[5]; + //int[] arr4 = new int[5]{1,2,3,4,5}; // 잘못된거 []안에 배열의 크기를 지정할 수 없다. + //int arr5[5]; // 잘못된거 + int[] arr6[] = new int[3][]; + + + //5-2. 다음과 같은 배열이 있을 때, arr[3].length의 값은? + int[][] arr7 = { + {5, 5, 5, 5, 5}, + {10, 10, 10}, + {20, 20, 20, 20}, + {30, 30} + }; + // 답 : 2 + } + +} + + +//5-3. 배열 arr에 담긴 모든 값을 더하는 프로그램을 완성하세요. +class Exercise5_3 { + public static void main(String[] args) { + int[] arr = {10, 20, 30, 40, 50}; + int sum = 0; + + for(int i = 0; i < arr.length; i++) { + sum += arr[i]; + } + + System.out.println("sum=" + sum); + } +}//예상 결과 : sum=150 + + +//5-4. 2차원 배열 arr에 담긴 모든 총합과 평균을 구하는 프로그램을 완성하세요. +class Exercise5_4 { + public static void main(String[] args) { + int[][] arr = { + {5, 5, 5, 5, 5}, + {10, 10, 10, 10, 10}, + {20, 20, 20, 20, 20}, + {30, 30, 30, 30, 30} + }; + + int total = 0; + float average = 0; + + int avgCnt = 0; + for(int i = 0; i < arr.length; i++) { + for (int j = 0; j < arr[i].length; j++) { + total += arr[i][j]; + avgCnt += 1; + average = (float) total / avgCnt; + } + } + + System.out.println("total=" + total); + System.out.println("average=" + average); + } // end of main +} // end of class + + +//5-5. 다음은 1과 9 사이의 중복되지 않은 숫자로 이루어진 3자리 숫자를 만들어내는 프로그램이다. +//코드를 완성하세요. 다만 Math.random()을 사용했기 때문에 실행 결과 예시와 다를 수 있습니다. +class Exercise5_5 { + public static void main(String[] args) { + int[] ballArr = {1, 2, 3, 4, 5, 6, 7, 8, 9}; + int[] ball3 = new int[3]; + + // 배열 ballArr의 임의의 요소를 골라서 위치를 바꾼다 + for (int i = 0; i < ballArr.length; i++) { + int j = (int) (Math.random() * ballArr.length); + int tmp = 0; + + tmp = ballArr[i]; + ballArr[i] = ballArr[j]; + ballArr[j] = tmp; + + } + + for (int i = 0; i < 3; i++) { + ball3[i] = ballArr[i]; + } + + // 배열 ballArr의 앞에서 3개의 수를 배열 ball3로 복사한다 + + System.arraycopy(ballArr,0, ball3,0,3); + + for (int i = 0; i < ball3.length; i++) { + System.out.print(ball3[i]); + } + }//end of main +}//end of class + + +//5-6. 단어의 글자위치를 섞어서 보여주고 원래의 단어를 맞추는 예제이다. +//실행결과와 같이 동작하도록 빈 칸을 채우세요. + +class Exercise5_13 { + public static void main(String args[]) { + String[] words = {"television", "computer", "mouse", "phone"}; + + Scanner sc = new Scanner(System.in); + + for (int i = 0; i < words.length; i++) { + char[] question = words[i].toCharArray(); // String을 char[]로 변환 + + for(int j = 0; j < question.length; j++) { + + int idx = (int) (Math.random() % question.length); // 인덱스를 가져오는 생각을 어케 하냐고 + char tmp; // 이건 또 뭔데 + tmp = question[j]; + question[j] = question[idx]; + question[idx] = tmp; + } // 이런 생각을 어떻게 하냐고 ㅡㅡ + + System.out.printf("Q%d. %s의 정답을 입력하세요 .>", i + 1, new String(question)); + String answer = sc.nextLine(); + + // trim()으로 answer의 좌우 공백을 제거한 후, equals로 word[i]와 비교 + if (words[i].equals(answer.trim())) + System.out.printf("맞았습니다.%n%n"); + else + System.out.printf("틀렸습니다.%n%n"); + } + } //end of main +}//end of class \ No newline at end of file diff --git "a/src/hwj_report/\353\241\234\352\267\270\354\235\270 \354\260\250\355\212\270 \355\224\214\353\241\234\354\232\260.png" "b/src/hwj_report/\353\241\234\352\267\270\354\235\270 \354\260\250\355\212\270 \355\224\214\353\241\234\354\232\260.png" new file mode 100644 index 0000000000000000000000000000000000000000..5459750af616d4e3fca7d8cb471483e474cf6a91 GIT binary patch literal 55913 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 Date: Thu, 19 Jan 2023 18:06:44 +0900 Subject: [PATCH 3/5] Delete .idea directory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit .idea 디렉토리 삭제 입니다. --- .idea/.gitignore | 8 -------- .idea/misc.xml | 6 ------ .idea/modules.xml | 8 -------- .idea/vcs.xml | 6 ------ 4 files changed, 28 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index c3f502a..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# 디폴트 무시된 파일 -/shelf/ -/workspace.xml -# 에디터 기반 HTTP 클라이언트 요청 -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 03f397c..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 0b0b192..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From d1fbfc05f3a8cfcca2780838f173f75a2802f642 Mon Sep 17 00:00:00 2001 From: 1juuun Date: Fri, 20 Jan 2023 16:35:45 +0900 Subject: [PATCH 4/5] =?UTF-8?q?Day03=20=EA=B3=BC=EC=A0=9C=20=EC=A0=9C?= =?UTF-8?q?=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hwj_report/Calculator.java | 77 +++++++++++++++ src/hwj_report/Report04.java | 2 +- src/hwj_report/Report05.java | 125 ++++++++++++++++++++++++ src/hwj_report/Report06.txt | 96 +++++++++++++++++++ src/hwj_report/Report07.java | 168 +++++++++++++++++++++++++++++++++ 5 files changed, 467 insertions(+), 1 deletion(-) create mode 100644 src/hwj_report/Calculator.java create mode 100644 src/hwj_report/Report05.java create mode 100644 src/hwj_report/Report06.txt create mode 100644 src/hwj_report/Report07.java diff --git a/src/hwj_report/Calculator.java b/src/hwj_report/Calculator.java new file mode 100644 index 0000000..0bce67d --- /dev/null +++ b/src/hwj_report/Calculator.java @@ -0,0 +1,77 @@ +package hwj_report; + +import java.util.Scanner; + +public class Calculator { + + public static void main(String[] args) { + + while (true) { + + // 계산기 왜 프로그래밍 언어에 제어문 + Scanner scanner = new Scanner(System.in); + // 숫자 2개랑, 연산기호 + + System.out.print("숫자 1 입력하세요 : "); + int num1 = scanner.nextInt(); + System.out.print("연산자를 입력하세요 : "); + String op = scanner.next(); + System.out.print("숫자 2 입력하세요 : "); + int num2 = scanner.nextInt(); + + + if (op.equals("*")) { + System.out.println(num1 * num2); + } else if (op.equals("/")) { // 분모 : num2 != 0 + if (num2 > 0) { + System.out.println(num1 / num2); + } else if (num2 == 0) { + System.out.println("다시 입력하세요!"); + } else { + System.out.println("음수값이 나옵니다."); + System.out.println(num1 / num2); + } + } else if (op.equals("+")) { + System.out.println(num1 + num2); + } else if (op.equals("-")) { + System.out.println(num1 - num2); + } + + if (op.equals("exit")) { + System.out.println("종료!"); + //break; + return; + } + + // switch +// switch (op) { +// case "*": +// System.out.println(num1 * num2); +// break; +// case "/": +// if (num2 > 0) { +// System.out.println(num1 / num2); +// } else { +// System.out.println("다시 입력하세요!"); +// } +// break; +// case "+": +// System.out.println(num1 + num2); +// break; +// case "-": +// System.out.println(num1 - num2); +// break; +// default: +// System.out.println("연산자가 틀렸습니다."); + } + + + } + +} + + + + + + diff --git a/src/hwj_report/Report04.java b/src/hwj_report/Report04.java index 5c23440..a6c6da9 100644 --- a/src/hwj_report/Report04.java +++ b/src/hwj_report/Report04.java @@ -127,7 +127,7 @@ public static void main(String args[]) { for(int j = 0; j < question.length; j++) { int idx = (int) (Math.random() % question.length); // 인덱스를 가져오는 생각을 어케 하냐고 - char tmp; // 이건 또 뭔데 + char tmp; tmp = question[j]; question[j] = question[idx]; question[idx] = tmp; diff --git a/src/hwj_report/Report05.java b/src/hwj_report/Report05.java new file mode 100644 index 0000000..4673de3 --- /dev/null +++ b/src/hwj_report/Report05.java @@ -0,0 +1,125 @@ +package hwj_report; + +public class Report05 { + public static void main(String[] args) { + System.out.println("Report05"); + } + +} +//6-1. 다음과 같은 멤버 변수를 갖는 Student 클래스를 정의하세요. +//타입 : String, 변수명 : name, 설명 : 학생 이름 +//타입 : int, 변수명 : ban, 설명 : 반 +//타입 : int, 변수명 : no, 설명 : 번호 +//타입 : int, 변수명 : kor, 설명 : 국어 점수 +//타입 : int, 변수명 : eng, 설명 : 영어 점수 +//타입 : int, 변수명 : math, 설명 : 수학 점수 + +class Student { + String name; + int ban; + int no; + int kor; + int eng; + int math; + +// public Student(String name, int ban, int no, int kor, int eng, int math){ +// this.name = name; +// this.ban = ban; +// this.no = no; +// this.kor = kor; +// this.eng = eng; +// this.math = math; +// } + + String info() { + return name + "," + ban + "," + no + "," + kor + "," + eng + "," + math; + } + + int getTotal() { + return kor + eng + math; + } + + float getAverage() { + return (int)(getTotal() / 3f * 10 + 0.5f) / 10.0f ; + } + +} + +//6-2. 6-1에서 정의한 Student 클래스에 생성자와 info()를 추가해서 실행결과와 같은 결과를 얻도록 하세요. +//class Exercise6_2{ +// public static void main(String[] args){ +// Student s = new Student("홍길동", 1, 1, 100, 60, 76); +// +// String str = s.info(); +// +// System.out.println(str); +// }// 예상 결과 : 홍길동, 1, 1, 100, 60, 76, 236, 78.7 +//} + + +//6-3. 연습문제 6-1에서 정의한 Student 클래스에 다음과 같이 정의된 두 개의 메서드를 추가하세요. + //1. 메서드명 : getTotal + //기능 : 국어(kor), 영어(eng), 수학(math)의 점수를 모두 더해서 반환한다. + //반환타입 : int + //매개변수 : 없음 +//2. 메서드명 : getAverage + //기능 : 총점(국어점수+영어점수+수학점수)을 과목수로 나눈 평균을 구한다. + //소수점 둘째자리에서 반올림할 것. + //반환타입 : float + //매개변수 : 없음 + +class Exercise6_3 { + public static void main(String args[]) { + + Student s = new Student(); + s.name = "홍길동"; + s.ban = 1; + s.no = 1; + s.kor = 100; + s.eng = 60; + s.math = 76; + + System.out.println("이름 :"+s.name); + System.out.println("총점 :"+s.getTotal()); + System.out.println("평균 :"+s.getAverage()); + + }//예상 결과 : 이름 : 홍길동, 총점 : 236, 평균 : 78.7 +} + +//6-5. 다음의 코드에 정의된 변수들을 종류별(클래스 변수,인스턴스 변수, 지역변수)로 구분해서 적으세요. +class PlayingCard { + int kind; // 인스턴스 변수 + int num; // 인스턴스 변수 + static int width; // 클래스 변수 + static int height; // 클래스 변수 + PlayingCard(int k, int n) { + kind = k; // 지역변수 + num = n; // 지역변수 + } + public static void main(String args[]) { + PlayingCard card = new PlayingCard(1,1); + } +} + + +//6-7. 다음은 컴퓨터 게임의 병사(marine)를 클래스로 정의한 것이다. + //이 클래스의 멤버 중에 static을 붙여야 하는 것은 어떤 것들이고 그 이유는 무엇인가? + //(단, 모든 병사의 공격력과 방어력은 같아야 한다.) +class Marine { + int x=0, y=0; //Marine의 위치좌표 (x,y) + static int hp = 60; //현재 체력 // 이유 : 업그레이드를 하지 않은 한 고정값이어야 하기 때문이다. + static int weapon = 6; //공격력 // 이유 : 업그레이드를 하지 않은 한 고정값이어야 하기 때문이다. + static int armor = 0; //방어력 // 이유 : 업그레이드를 하지 않은 한 고정값이어야 하기 때문이다. + void weaponUp() { + weapon++; + } + void armorUp() { + armor++; + } + void move(int x, int y) { + this.x = x; + this.y = y; + } +} + + diff --git a/src/hwj_report/Report06.txt b/src/hwj_report/Report06.txt new file mode 100644 index 0000000..45a3977 --- /dev/null +++ b/src/hwj_report/Report06.txt @@ -0,0 +1,96 @@ +6-8. 다음 중 생성자에 대한 설명으로 옳지 않은 것은? (모두 고르시오) +a. 모든 생성자의 이름은 클래스의 이름과 동일해야한다. +b. 생성자는 객체를 생성하기 위한 것이다. +c. 클래스에는 생성자가 반드시 하나 이상 있어야 한다. +d. 생성자가 없는 클래스는 컴파일러가 기본 생성자를 추가한다. +e. 생성자는 오버로딩 할 수 없다. + +답 : b (클래스가 객체를 생성하기 위한 것, 생성자는 객체를 초기화하기 위한 것) / e. (오버로딩 할 수 있다.) + + +6-9. 다음 중 this에 대한 설명으로 맞지 않은 것은? (모두 고르시오) +a. 객체 자신을 가리키는 참조변수이다. +b. 클래스 내에서라면 어디서든 사용할 수 있다. +c. 지역변수와 인스턴스변수를 구별할 때 사용한다. +d. 클래스 메서드 내에서는 사용할 수 없다. + +답: b (this는 인스턴스 메서드 내에서만 사용 가능하다.) + + +6-10. 다음 중 오버로딩이 성립하기 위한 조건이 아닌 것은? (모두 고르시오) +a. 메서드의 이름이 같아야 한다. +b. 매개변수의 개수나 타입이 달라야 한다. +c. 리턴타입이 달라야 한다. +d. 매개변수의 이름이 달라야 한다. + +답 : c, d. - 오버로딩의 조건 : 1. 메서드 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입, 위치가 달라야 한다. 3. 반환타입에는 영향을 받지 않는다. + + +6-11. 다음 중 아래의 add메서드를 올바르게 오버로딩 한 것은? (모두 고르시오) +> long add(int a, int b) { return a+b; } + +a. long add(int x, int y) { return x+y; } +b. long add(long a, long b) { return a+b; } +c. int add(byte a, byte b) { return a+b; } +d. int add(long a, int b) { return (int)(a+b); } + +답 : b, c, d + + +6-12. 다음 중 초기화에 대한 설명으로 옳지 않은 것은? (모두 고르시오) +a. 멤버변수는 자동 초기화되므로 초기화하지 않고도 값을 참고할 수 있다. +b. 지역변수는 사용하기 전에 반드시 초기화해야 한다. +c. 초기화 블럭보다 생성자가 먼저 수행된다. +d. 명시적 초기화를 제일 우선적으로 고려해야 한다. +e. 클래스변수보다 인스턴스변수가 먼저 초기화된다 + +답 : c, e - 멤버 변수의 초기화 : 자동으로 초기화 된다. 클래스변수 - 클래스가 처음 로딩 될 때 단 한번만 초기화 / 인스턴스 변수 : 인스턴스가 생성될 때 마다 초기화 + - 지역 변수의 초기화 : 수동으로 초기화 된다. 해당 주소에 어떠한 값이 있는지 모르기 때문에 Java는 개발자에게 수동으로 초기화 하라고 요구 + + +6-13. 다음 중 인스턴스변수의 초기화 순서가 올바른 것은? +a. 기본값-명시적초기화-초기화블럭-생성자 +b. 기본값-명시적초기화-생성자-초기화블럭 +c. 기본값-초기화블럭-명시적초기화-생성자 +d. 기본값-초기화블럭-생성자-명시적초기화 + +답 : a + + +6-14. 다음 중 지역변수에 대한 설명으로 옳지 않은 것은? (모두 고르시오) +a. 자동 초기화되므로 별도의 초기화가 필요없다. +b. 지역변수가 선언된 메서드가 종료되면 지역변수도 함께 소멸된다. +c. 메서드의 매개변수로 선언된 변수도 지역변수이다. +d. 클래스변수나 인스턴스변수보다 메모리 부담이 적다. +e. 힙(heap)영역에 생성되며 가비지 컬렉터에 의해 소멸된다. + + +답 : a (수동으로 초기화 해야함), e (호출 스택에서 생성 된다.) + + +6-15. 호출스택이 다음과 같은 상황일 때 옳지 않은 설명은? (모두 고르시오) +a. 제일 먼저 호출스택에 저장된 것은 main메서드이다. +b. println메서드를 제외한 나머지 메서드들은 모두 종료된 상태이다. +c. method2메서드를 호출한 것은 main메서드이다. +d. println메서드가 종료되면 method1메서드가 수행을 재개한다. +e. main-method2-method1-println의 순서로 호출되었다. +f. 현재 실행중인 메서드는 println뿐이다. + +답 : b (호출 스택 제일 위에있는 메서드는 현재 수행중인 것이고 나머지는 수행중인 메서드를 끝나기를 기다리고 있음) + + +//6-16. 다음 코드의 실행 결과를 예측하여 적어주세요. +class Exercise6_16 { + public static void change(String str) { + str += "456"; + } + + public static void main(String[] args) { + String str = "ABC123"; + System.out.println(str); + change(str); + System.out.println("After change:" + str); + } +} + +답 : ABC123 , After change = ABC123 \ No newline at end of file diff --git a/src/hwj_report/Report07.java b/src/hwj_report/Report07.java new file mode 100644 index 0000000..d3bbb72 --- /dev/null +++ b/src/hwj_report/Report07.java @@ -0,0 +1,168 @@ +package hwj_report; + +public class Report07 { + public static void main(String[] args) { + System.out.println("Report07"); + } +} + +class Exercise6_17 { + + public static int[] shuffle(int[] arr) { + + for(int i = 0; i < arr.length; i++) { + + int num = (int)(Math.random() * arr.length); + + int idx = arr[num]; + arr[num] = arr[i]; + arr[i] = idx; + + } + return arr; + } + + public static void main(String[] args) { + int[] original = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + System.out.println(java.util.Arrays.toString(original)); + + int[] result = shuffle(original); + System.out.println(java.util.Arrays.toString(result)); + } +} + +class Exercise6_18 { + + public static boolean isNumber(String str) { + + if(str == null || str.equals("")) { + return false; + } + + for (int i = 0; i < str.length(); i++) { + char apb = str.charAt(i); + + if (apb < '0' || apb > '9') { + return false; + } + } + return true; + } + public static void main(String[] args) { + String str = "123"; + System.out.println(str + " 는 숫자입니까? " + isNumber(str)); + str = "1234o"; + System.out.println(str + " 는 숫자입니까? " + isNumber(str)); + } +} +//예상 결과 : 123는 숫자입니까? true, 1234o는 숫자입니까? false + +class MyTv { + boolean isPowerOn; + int channel; + int volume; + final int MAX_VOLUME = 100; + final int MIN_VOLUME = 0; + final int MAX_CHANNEL = 100; + final int MIN_CHANNEL = 1; + void turnOnOff() { + // (1) isPowerOn의 값이 true면 false로, false면 true로 바꾼다. + if(isPowerOn == true) { + System.out.println(true); + } else { + System.out.println(false); + } + + } + void volumeUp() { + // (2) volume의 값이 MAX_VOLUME보다 작을 때만 값을 1 증가시킨다. + if(volume < MAX_VOLUME) { + volume += 1; + } + } + void volumeDown() { + // (3) volume의 값이 MIN_VOLUME보다 클 때만 값을 1 감소시킨다. + if(volume > MIN_VOLUME) { + volume -= 1; + } + } + void channelUp() { + // (4) channel의 값을 1 증가시킨다. + channel += 1; + // 만일 channel이 MAX_CHANNEL이면 , channel의 값을 MIN_CHANNEL로 바꾼다. + if(channel == MAX_CHANNEL + 1){ + channel = MIN_CHANNEL; + } + } + void channelDown() { + // (5) channel의 값을 1 감소시킨다 . + channel -= 1; + // 만일 channel이 MIN_CHANNEL이면, channel의 값을 MAX_CHANNEL로 바꾼다. + if(channel == MIN_CHANNEL - 1) { + channel = MAX_CHANNEL; + } + } +} + +class Exercise6_19 { + public static void main(String args[]) { + MyTv t = new MyTv(); + t.channel = 100; + t.volume = 0; + System.out.println("CH:" + t.channel + ", VOL:" + t.volume); + t.channelDown(); + t.volumeDown(); + System.out.println("CH:" + t.channel + ", VOL:" + t.volume); + t.volume = 100; + t.channelUp(); + t.volumeUp(); + System.out.println("CH:" + t.channel + ", VOL:" + t.volume); + } +} +//예상 결과 : CH: 100, VOL: 0 / CH: 99, VOL: 0 / CH: 100, VOL: 100 + +class Exercise6_20 { + + static int max(int[] arr) { + + if(arr == null || arr.length == 0) { + return -999999; + } + + int max = 0; + for(int i = 0; i < arr.length; i++) { + if(arr[i] > max) { + max = arr[i]; + } + } + return max; + } + public static void main(String[] args) { + int[] data = {3,2,9,4,7}; + System.out.println(java.util.Arrays.toString(data)); + System.out.println("최대값 :" + max(data)); + System.out.println("최대값 :" + max(null)); + System.out.println("최대값 :" + max(new int[]{})); // 크기가 0인 배열 } + } +} +//예상 결과 : 최대값: 9 / 최대값: -99999 최대값: -999999 +class Exercise6_21 { + + static int abs(int value){ + + if(value < 0) { + value = value * -1; + } + + return value; + } + + public static void main(String[] args) { + int value = 5; + System.out.println(value + "의 절대값 :" + abs(value)); + value = -10; + System.out.println(value + "의 절대값 :" + abs(value)); + } +} +//예상 결과 : 5의 절대값 : 5 / -10의 절대값 : 10 + From fc291b0fffa7a82a933bdcf7f63c0798a935dc31 Mon Sep 17 00:00:00 2001 From: 1juuun Date: Wed, 25 Jan 2023 16:49:37 +0900 Subject: [PATCH 5/5] =?UTF-8?q?Day04=20=EA=B3=BC=EC=A0=9C=20=EC=A0=9C?= =?UTF-8?q?=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hwj_report/Report08.java | 207 +++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 src/hwj_report/Report08.java diff --git a/src/hwj_report/Report08.java b/src/hwj_report/Report08.java new file mode 100644 index 0000000..a6bee1e --- /dev/null +++ b/src/hwj_report/Report08.java @@ -0,0 +1,207 @@ +package hwj_report; + +public class Report08 { + + public static void main(String[] args) { + System.out.println("Report08"); + } + +} + + +// 7-1 섯다카드 20장을 포함하는 섯다카드 한 벌(SutdaDeck클래스)을 정의한 것이다. +// 섯다카드 20장을 담는 SutdaCard배열을 초기화하시오. +// 단, 섯다카드는 1부터 10까지의 숫자 가 적힌 카드가 한 쌍씩 있고, 숫자가 1, 3, 8인 경우에는 둘 중의 한 장은 광(Kwang)이 어야 한다. +// 즉, SutdaCard의 인스턴스변수 isKwang의 값이 true이어야 한다. +class SutdaDeck { + final int CARD_NUM = 20; + SutdaCard[] cards = new SutdaCard[CARD_NUM]; + + SutdaDeck() { + for (int i = 0; i < cards.length; i++) { + int num = i % 10 + 1; // 이해가 되질 않음 + boolean Kwang = (i < 10) && (num == 1 || num == 3 || num == 8); + + cards[i] = new SutdaCard(num, Kwang); + + } + } + void shuffle() { + for (int i = 0; i < cards.length; i++) { + int cardNum = (int)Math.random() * cards.length; + + SutdaCard tmp = cards[i]; + cards[i] = cards[cardNum]; + cards[cardNum] = tmp; + } + + } + SutdaCard pick(int index) { + if(index < 0 || index >20) { + return null; + } + return cards[index]; + } + SutdaCard pick() { + int random = (int)(Math.random()*cards.length); + return cards[random]; + } + +} +class SutdaCard { + int num; + boolean isKwang; + + SutdaCard() { + this(1, true); + } + SutdaCard(int num, boolean isKwang) { + this.num = num; + this.isKwang = isKwang; + } + // info()대신 Object클래스의 toString()을 오버라이딩했다. + @Override + public String toString() { + return num + ( isKwang ? "K":""); + } +} +class Exercise7_1 { + public static void main(String args[]) { + SutdaDeck deck = new SutdaDeck(); + + for (int i = 0; i < deck.cards.length; i++) + System.out.print(deck.cards[i] + ","); + } +} +// 예상결과) 1K,2,3K,4,5,6,7,8K,9,10,1,2,3,4,5,6,7,8,9,10, + + +// 7-2. 연습문제 7-1. 의 SutdaDeck클래스에 다음에 정의된 새로운 메서드를 추가하고 테스트 하시오. +class Exercise7_2 { + public static void main(String args[]) { + SutdaDeck deck = new SutdaDeck(); + + System.out.println(deck.pick(0)); + System.out.println(deck.pick()); + deck.shuffle(); + + for(int i = 0; i < deck.cards.length; i++) + System.out.print(deck.cards[i]+","); + + System.out.println(); + System.out.println(deck.pick(0)); + } +} +//예상결과) +// 1K +// 7 +// 2,6,10,1K,7,3,10,5,7,8,5,1,2,9,6,9,4,8K,4,3K, +// 2 + + +// 7-3. 다음의 코드는 컴파일하면 에러가 발생한다. 그 이유를 설명하고 에러를 수정하기 위해서는 코드를 어떻게 바꾸어야 하는가? +class Product { + int price; // 제품의 가격 + int bonusPoint; // 제품구매 시 제공하는 보너스점수 + + // (구현) + Product () { + // 부모 클래스에 기본 생성자를 만들어 준다. + } + Product(int price) { + this.price = price; + bonusPoint = (int) (price / 10.0); + } +} +class Tv extends Product { + Tv() { +// super(1000); // 자식 클래스에서 인스턴스를 생성할 때 기본 생성자가 호출 되어야 한다. 그래서 조상의 생성자를 호출시킴!! + } + public String toString() { + return "Tv"; + } +} +class Exercise7_3 { + public static void main(String[] args) { + Tv t = new Tv(); + } +} + +// 7-4. MyTv클래스의 멤버변수 isPowerOn, channel, volume을 클래스 외부에서 접근할 수 없도록 제어자를 붙이고 대신 이 멤버변수들의 값을 어디서나 읽고 변경할 수 있도록 getter와 setter메서드를 추가하라. +// 7-5. 문제7-4에서 작성한 MyTv2클래스에 이전 채널(previous channel)로 이동하는 기능 의 메서드를 추가해서 실행결과와 같은 결과를 얻도록 하시오. +class MyTv2 { + private boolean isPowerOn; + private int channel; + private int volume; + private int prevChannel; + + final int MAX_VOLUME = 100; + final int MIN_VOLUME = 0; + final int MAX_CHANNEL = 100; + final int MIN_CHANNEL = 1; + + public void gotoPrevChannel() { + setChannel(prevChannel); + } + + public boolean isPowerOn() { + return isPowerOn; + } + + public void setPowerOn(boolean powerOn) { + isPowerOn = powerOn; + } + + public int getChannel() { + return channel; + } + + public void setChannel(int channel) { + if (channel > MAX_CHANNEL || channel < MIN_CHANNEL) { + return; + } + prevChannel = this.channel; + this.channel = channel; + } + + public int getVolume() { + return volume; + } + + public void setVolume(int volume) { + if (volume > MAX_VOLUME || volume < MIN_VOLUME) + return; + this.volume = volume; + } +} + +class Exercise7_4 { + public static void main(String args[]) { + MyTv2 t = new MyTv2(); + + t.setChannel(10); + System.out.println("CH:" + t.getChannel()); + t.setVolume(20); + System.out.println("VOL:" + t.getVolume()); + } +} +//예상결과) CH:10 VOL:20 + +class Exercise7_5 { + public static void main(String args[]) { + MyTv2 t = new MyTv2(); + + t.setChannel(10); + System.out.println("CH:" + t.getChannel()); + t.setChannel(20); + System.out.println("CH:" + t.getChannel()); + t.gotoPrevChannel(); + System.out.println("CH:" + t.getChannel()); + t.gotoPrevChannel(); + System.out.println("CH:" + t.getChannel()); + } +} +// CH:10 +// CH:20 +// CH:10 +// CH:20 \ No newline at end of file