diff --git a/src/kimdongmin/report1/Report1_1 b/src/kimdongmin/report1/Report1_1 new file mode 100644 index 0000000..b46d710 --- /dev/null +++ b/src/kimdongmin/report1/Report1_1 @@ -0,0 +1,3 @@ +2-4번 문제 + +정답 : b, c, answer, f diff --git a/src/kimdongmin/report1/Report1_2 b/src/kimdongmin/report1/Report1_2 new file mode 100644 index 0000000..d814329 --- /dev/null +++ b/src/kimdongmin/report1/Report1_2 @@ -0,0 +1,9 @@ +2-7번 문제 + +정답 : 12 +true +131 +51 +99 +Java +오류 \ No newline at end of file diff --git a/src/studentenglishname/report1/Report1_3.java b/src/kimdongmin/report1/Report1_3.java similarity index 50% rename from src/studentenglishname/report1/Report1_3.java rename to src/kimdongmin/report1/Report1_3.java index 5b75b9c..e10a870 100644 --- a/src/studentenglishname/report1/Report1_3.java +++ b/src/kimdongmin/report1/Report1_3.java @@ -1,9 +1,23 @@ -package studentenglishname.report1; + +package kimdongmin.report1; // 2-8 번 문제 <- 이렇게 문제 번호 작성 필수 public class Report1_3 { public static void main(String[] args) { + int x = 1; + int y = 2; + int z = 3; + /* + 알맞은 코드를 넣어 완성하세요. + */ + int x_temp = x; + x = y; + y = z; + z = x_temp; + System.out.println("x="+x); + System.out.println("y="+y); + System.out.println("z="+z); // 정답 작성 - // Ex) + AddClass addClass = new AddClass(); addClass.test(); } @@ -11,6 +25,7 @@ public static void main(String[] args) { // 필요하다면 클래스 추가 class AddClass { + void test() { System.out.println("AddClass.test"); } diff --git a/src/kimdongmin/report2/Report2_1 b/src/kimdongmin/report2/Report2_1 new file mode 100644 index 0000000..ca1b671 --- /dev/null +++ b/src/kimdongmin/report2/Report2_1 @@ -0,0 +1,3 @@ +3-1 문제 + +정답: b, s, i \ No newline at end of file diff --git a/src/kimdongmin/report2/Report2_2.java b/src/kimdongmin/report2/Report2_2.java new file mode 100644 index 0000000..d8709c7 --- /dev/null +++ b/src/kimdongmin/report2/Report2_2.java @@ -0,0 +1,32 @@ +package kimdongmin.report2; +// 3-2번 문제 +public class Report2_2 { + public static void main(String[] args) { + int x = 2; + int y = 5; + char c = 'A'; // 'A'의 문자코드는 65 + + System.out.println(y >= 5 || x < 0 && x > 2); + // true,&& 연산자 먼저 계산되어 false이고 ||의 앞에 있는 y >= 5 가 true이기 때문에 true입니다 + System.out.println(y += 10 - x++); + // x++는 참조된 후에 계산되므로 10 - x++의 값은 8이고, y에 그 결과값 8을 더한 것이 최종 결과값이므로 13입니다 + System.out.println(x += 2); + // +=는 오른쪽 피연산자의 값을 왼쪽 피연산자에 더한 뒤 그 값을 출력하므로 3+2가 되어 5입니다 + System.out.println(!('A' <= c && c <= 'Z')); + // c는 'A'와 같고 'Z'보다는 작으므로 true이고, !는 그 값을 반대로 출력하므로 false입니다 + System.out.println('C' - c); + // 'C'의 문자코드는 67이므로 67-65는 2 입니다 + System.out.println('5' - '0'); + // '5'와 '0'은 문자코드에서도 연속된 값으로 5칸이 차이나므로 계산 결과 역시 5입니다 + System.out.println(c + 1); + // c = 'A'이고 'A'는 문자코드 65이므로 65+1은 66입니다 + System.out.println(++c); + // ++를 c 앞에 붙일 때에는 참조되기 전에 c의 값을 증가시키므로 B가 출력됩니다 + System.out.println(c++); + // ++를 c 뒤에 붙였으므로 기존 c의 값인 B가 출력되고, 참조된 후에 c의 값이 증가해 C가 됩니다 + System.out.println(c); + // 위의 c++의 결과 c의 값이 C가 되었습니다 + + + } +} diff --git a/src/kimdongmin/report2/Report2_3 b/src/kimdongmin/report2/Report2_3 new file mode 100644 index 0000000..c1f3b0e --- /dev/null +++ b/src/kimdongmin/report2/Report2_3 @@ -0,0 +1,3 @@ +3-3 문제 + +정답 : (int)(Math.floor((num/100)*100)) \ No newline at end of file diff --git a/src/kimdongmin/report2/Report2_4 b/src/kimdongmin/report2/Report2_4 new file mode 100644 index 0000000..6664149 --- /dev/null +++ b/src/kimdongmin/report2/Report2_4 @@ -0,0 +1,3 @@ +3-4 문제 + +정답 : numOfApples / sizeOfBucket + 1 \ No newline at end of file diff --git a/src/kimdongmin/report2/Report2_5 b/src/kimdongmin/report2/Report2_5 new file mode 100644 index 0000000..3700db5 --- /dev/null +++ b/src/kimdongmin/report2/Report2_5 @@ -0,0 +1,3 @@ +3-5 문제 + +정답 : num >= 0 ? (num > 0 ? "양수" : "0" ) : "음수" \ No newline at end of file diff --git a/src/kimdongmin/report2/Report2_6 b/src/kimdongmin/report2/Report2_6 new file mode 100644 index 0000000..d77ba49 --- /dev/null +++ b/src/kimdongmin/report2/Report2_6 @@ -0,0 +1,3 @@ +3-6 문제 + +정답 : (fahrenheit-32)*5*100/9%10 >=5 ? ((fahrenheit-32)*5*100/9+1)/100f : ((fahrenheit-32)*5*100/9)/100f \ No newline at end of file diff --git a/src/kimdongmin/report3/Report3_1 b/src/kimdongmin/report3/Report3_1 new file mode 100644 index 0000000..f65729b --- /dev/null +++ b/src/kimdongmin/report3/Report3_1 @@ -0,0 +1,18 @@ +// 4-1번 문제 + +정답 : +10 < x && x < 20 + +!(ch==' ' || ch=='\t') + +ch=='x' || ch=='X' + +'0' <= ch && ch <= '9' + +'a' <= ch && ch <= 'Z' + +year % 400==0 || (year % 4==0 && year % 100 != 0) + +powerOn == false + +str.equals("yes") \ No newline at end of file diff --git a/src/kimdongmin/report3/Report3_10.java b/src/kimdongmin/report3/Report3_10.java new file mode 100644 index 0000000..0a18366 --- /dev/null +++ b/src/kimdongmin/report3/Report3_10.java @@ -0,0 +1,31 @@ +package kimdongmin.report3; + +public class Report3_10 { +} +//4-10 문제 +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(input==answer) { + System.out.println("맞혔습니다."); + System.out.println("시도횟수는 "+ count + "번입니다."); + break; + } else if (input > answer) { + System.out.println("더 작은 수를 입력하세요."); + } else { + System.out.println("더 큰 수를 입력하세요."); + } + } while(true); //무한반복문 + } // end of main +} // end of class \ No newline at end of file diff --git a/src/kimdongmin/report3/Report3_2.java b/src/kimdongmin/report3/Report3_2.java new file mode 100644 index 0000000..be1257d --- /dev/null +++ b/src/kimdongmin/report3/Report3_2.java @@ -0,0 +1,21 @@ +package kimdongmin.report3; + +public class Report3_2 { + +} +//4-2 문제 +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) + continue; + sum += i ; + } + //빈칸끝 + System.out.println("sum="+sum); + } +} + +//정답은 73 입니다. \ No newline at end of file diff --git a/src/kimdongmin/report3/Report3_3.java b/src/kimdongmin/report3/Report3_3.java new file mode 100644 index 0000000..a699812 --- /dev/null +++ b/src/kimdongmin/report3/Report3_3.java @@ -0,0 +1,21 @@ +package kimdongmin.report3; + +public class Report3_3 { +} +//4-3 문제 + +class Exercise4_3 { + public static void main(String[] args) { + int sum = 0; + int totalSum = 0; + /*빈 칸*/ + for(int i=1;i<=10;i++) { + sum += i; + totalSum += sum; + } + //빈칸끝 + + System.out.println("totalSum="+totalSum); + } +} +//정답은 220 입니다. \ No newline at end of file diff --git a/src/kimdongmin/report3/Report3_4.java b/src/kimdongmin/report3/Report3_4.java new file mode 100644 index 0000000..a561518 --- /dev/null +++ b/src/kimdongmin/report3/Report3_4.java @@ -0,0 +1,24 @@ +package kimdongmin.report3; + +public class Report3_4 { +} +//4_4 문제 +class Exercise4_4 { + public static void main(String[] args) { + int sum = 0; // 총합을 저장할 변수 + int s = 1; // 값의 부호를 바꿔주는데 사용할 변수 + int num = 0; + /*빈 칸*/ + while (true){ + if(sum >= 100) + break; + num++; + sum += num*s; + s = -s; + } + //빈칸끝 + System.out.println("num="+num); + System.out.println("sum="+sum); + } +} +//정답은 199 입니다. \ No newline at end of file diff --git a/src/kimdongmin/report3/Report3_5.java b/src/kimdongmin/report3/Report3_5.java new file mode 100644 index 0000000..dd950b4 --- /dev/null +++ b/src/kimdongmin/report3/Report3_5.java @@ -0,0 +1,29 @@ +package kimdongmin.report3; +//4_5 문제 + +public class Report3_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(); + } + }//end of main +} // end of class + + +//정답 +class answer { + public static void main(String[] args) { + int i = 0; + while (i <= 10) { + int j = 0; + while (j <= i) { + j++; + System.out.print("*"); + } + i++; + System.out.println(); + } + } +} \ No newline at end of file diff --git a/src/kimdongmin/report3/Report3_6.java b/src/kimdongmin/report3/Report3_6.java new file mode 100644 index 0000000..a1cecdf --- /dev/null +++ b/src/kimdongmin/report3/Report3_6.java @@ -0,0 +1,23 @@ +package kimdongmin.report3; + +//4-6 문제 +public class Report3_6 { +} + +//정답 +class Exercise4_6 { + public static void main(String[] args) { + /*빈 칸*/ + int[] dice1 = {1, 2, 3, 4, 5, 6}; + int[] dice2 = {1, 2, 3, 4, 5, 6}; + + for(int i=0; i < dice1.length; i++) { + for(int j=0; j < dice2.length; j++) { + if(dice1[i] + dice2[j] == 6) + System.out.println(dice1[i] + "," + dice2[j]); + } + } + //빈칸끝 + + } +} \ No newline at end of file diff --git a/src/kimdongmin/report3/Report3_7.java b/src/kimdongmin/report3/Report3_7.java new file mode 100644 index 0000000..c985cc7 --- /dev/null +++ b/src/kimdongmin/report3/Report3_7.java @@ -0,0 +1,22 @@ +package kimdongmin.report3; + +//4-7 문제 +public class Report3_7 { +} + +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("sum=" + sum); + } +}//예상 결과 : sum=15 + +//정답은 sum += str.charAt(i)-'0'; 입니다. \ No newline at end of file diff --git a/src/kimdongmin/report3/Report3_8.java b/src/kimdongmin/report3/Report3_8.java new file mode 100644 index 0000000..6e61e92 --- /dev/null +++ b/src/kimdongmin/report3/Report3_8.java @@ -0,0 +1,12 @@ +package kimdongmin.report3; + +public class Report3_8 { +} +//문제 4-8 +class Exercise4_8{ + public static void main(String[] args){ + int value = (/*빈 칸*/(int)(Math.random()*6+1) /* 빈칸끝 */); + System.out.println("value:"+value); + } +} +//정답은 (int)(Math.random()*6+1) 입니다. \ No newline at end of file diff --git a/src/kimdongmin/report3/Report3_9.java b/src/kimdongmin/report3/Report3_9.java new file mode 100644 index 0000000..87e0d63 --- /dev/null +++ b/src/kimdongmin/report3/Report3_9.java @@ -0,0 +1,24 @@ +package kimdongmin.report3; + +public class Report3_9 { +} +//4-9 문제 +class Exercise4_9 { + public static void main(String[] args) { + int num = 12345; + int sum = 0; + /*빈 칸*/ + while (num >= 1) { + sum += num % 10; + num = num / 10; + } + //빈칸끝 + System.out.println("sum=" + sum); + } +} + +//정답은 while (num >= 1) { +// sum += num % 10; +// num = num / 10; +// } +//입니다 \ No newline at end of file diff --git a/src/kimdongmin/report3/login.drawio.png b/src/kimdongmin/report3/login.drawio.png new file mode 100644 index 0000000..b79b255 Binary files /dev/null and b/src/kimdongmin/report3/login.drawio.png differ diff --git a/src/kimdongmin/report4/Report4_1 b/src/kimdongmin/report4/Report4_1 new file mode 100644 index 0000000..4c128aa --- /dev/null +++ b/src/kimdongmin/report4/Report4_1 @@ -0,0 +1,14 @@ +5_1 문제 + +정답: +int[] arr[]; +틀린 이유: arr 뒤에 []를 붙이면 안됨. + +int[] arr = new int[5]{1,2,3,4,5}; +틀린 이유: 배열 길이와 내용물은 따로 저장해야함. + +int arr[5]; +틀린 이유: 배열 길이 선언은 int[] arr = new int[5]; 의 형태로 해야 함. + +int[] arr[] = new int[3][]; +틀린 이유: 2차원 배열은 int[][] arr = new int[3][4]; 의 형태로 선언해야함. \ No newline at end of file diff --git a/src/kimdongmin/report4/Report4_2 b/src/kimdongmin/report4/Report4_2 new file mode 100644 index 0000000..2e64458 --- /dev/null +++ b/src/kimdongmin/report4/Report4_2 @@ -0,0 +1,3 @@ +5-2 문제 + +정답 : arr[3]은 4번째 행, {30,30}을 의미하므로 arr[3].length 의 값은 2 이다. \ No newline at end of file diff --git a/src/kimdongmin/report4/Report4_3.java b/src/kimdongmin/report4/Report4_3.java new file mode 100644 index 0000000..5195ec6 --- /dev/null +++ b/src/kimdongmin/report4/Report4_3.java @@ -0,0 +1,22 @@ +package kimdongmin.report4; + +public class Report4_3 { +} +//5-3 문제 +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 + +//정답은 for(int i=0; i < arr.length; i++) { +// sum += arr[i]; +// } +// 입니다. \ No newline at end of file diff --git a/src/kimdongmin/report4/Report4_4.java b/src/kimdongmin/report4/Report4_4.java new file mode 100644 index 0000000..dc272af --- /dev/null +++ b/src/kimdongmin/report4/Report4_4.java @@ -0,0 +1,31 @@ +package kimdongmin.report4; + +public class Report4_4 { +} +//5-4 문제 +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; + + /*빈 칸*/ + for (int i=0; i < arr.length ; i++){ + for (int j=0; j < arr[i].length; j++) { + total += arr[i][j]; + if (i==arr.length-1 && j==arr[i].length-1) + average = total/(i+1f)/(j+1f); + } + } + //빈칸 끝 + + System.out.println("total=" + total); + System.out.println("average=" + average); + } // end of main +} // end of class \ No newline at end of file diff --git a/src/kimdongmin/report4/Report4_5.java b/src/kimdongmin/report4/Report4_5.java new file mode 100644 index 0000000..2b5a465 --- /dev/null +++ b/src/kimdongmin/report4/Report4_5.java @@ -0,0 +1,32 @@ +package kimdongmin.report4; + +import java.util.Arrays; + +public class Report4_5 { +} +//5-5 문제 +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; + } + + // 배열 ballArr의 앞에서 3개의 수를 배열 ball3로 복사한다 + + /*빈 칸*/ + ball3 = Arrays.copyOfRange(ballArr,0,3); + + for (int i = 0; i < ball3.length; i++) { + System.out.print(ball3[i]); + } + }//end of main +}//end of class \ No newline at end of file diff --git a/src/kimdongmin/report4/Report4_6.java b/src/kimdongmin/report4/Report4_6.java new file mode 100644 index 0000000..79793f8 --- /dev/null +++ b/src/kimdongmin/report4/Report4_6.java @@ -0,0 +1,35 @@ +package kimdongmin.report4; +import java.util.Scanner; + +public class Report4_6 { +} +//5-6 문제 +class Exercise5_13 { + public static void main(String args[]) { + String[] words = { "television", "computer", "mouse", "phone" }; + + Scanner scanner = 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 num = (int)(Math.random()* question.length); + char tmp = question[0]; + question[0] = question[num]; + question[num] = tmp; + } + //빈칸 끝 + + System.out.printf("Q%d. %s의 정답을 입력하세요 .>", i + 1, new String(question)); + String answer = scanner.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/kimdongmin/report5/Report5_1 b/src/kimdongmin/report5/Report5_1 new file mode 100644 index 0000000..4f83b95 --- /dev/null +++ b/src/kimdongmin/report5/Report5_1 @@ -0,0 +1,18 @@ +//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; // 수학 점수 + } \ No newline at end of file diff --git a/src/kimdongmin/report5/Report5_2.java b/src/kimdongmin/report5/Report5_2.java new file mode 100644 index 0000000..ddc3cfa --- /dev/null +++ b/src/kimdongmin/report5/Report5_2.java @@ -0,0 +1,82 @@ +package kimdongmin.report5; +//6-2, 6-3 답지 +//Report5_2.java와 Report5_3.java로 나누어 제출하고자 했으나 +// java: duplicate class 에러가 뜨며 실행이 안되어서 따로 올립니다 + +//6-2. 6-1에서 정의한 Student 클래스에 생성자와 info()를 추가해서 실행결과와 같은 결과를 얻도록 하세요. +public class Report5_2 { +} + + +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 +} + +class Student{ + /*빈 칸*/ + String name; //학생 이름 + int ban; // 반 + int no; // 번호 + int kor; // 국어 점수 + int eng; // 영어 점수 + int math; // 수학 점수 + + public Student(){ + + } + + 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() { + int sum = kor+eng+math; + return sum; + } + + float getAverage() { + float average = Math.round((kor+eng+math)*10/3f)/10f; + return average; + } + +} \ No newline at end of file diff --git a/src/kimdongmin/report5/Report5_4.java b/src/kimdongmin/report5/Report5_4.java new file mode 100644 index 0000000..07325a8 --- /dev/null +++ b/src/kimdongmin/report5/Report5_4.java @@ -0,0 +1,19 @@ +package kimdongmin.report5; + +public class Report5_4 { +} + +//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); + } +} \ No newline at end of file diff --git a/src/kimdongmin/report5/Report5_5.java b/src/kimdongmin/report5/Report5_5.java new file mode 100644 index 0000000..10fd33b --- /dev/null +++ b/src/kimdongmin/report5/Report5_5.java @@ -0,0 +1,26 @@ +package kimdongmin.report5; + +public class Report5_5 { +} + +//6-7. 다음은 컴퓨터 게임의 병사(marine)를 클래스로 정의한 것이다. +//이 클래스의 멤버 중에 static을 붙여야 하는 것은 어떤 것들이고 그 이유는 무엇인가? +//(단, 모든 병사의 공격력과 방어력은 같아야 한다.) +class Marine { + int x=0, y=0; //Marine의 위치좌표 (x,y) + int hp = 60; //현재 체력 + int weapon = 6; //공격력 + int armor = 0; //방어력 + void weaponUp() { + weapon++; + } + void armorUp() { + armor++; + } + void move(int x, int y) { + this.x = x; + this.y = y; + } +} +// static 이 붙어야 하는 것은 모든 marine이 동일한 값을 가져야 하는 변수입니다. +// 따라서 weapon 과 armor 의 앞에 static이 붙어야 합니다. \ No newline at end of file diff --git a/src/kimdongmin/report6/Report6_1.txt b/src/kimdongmin/report6/Report6_1.txt new file mode 100644 index 0000000..7c6f321 --- /dev/null +++ b/src/kimdongmin/report6/Report6_1.txt @@ -0,0 +1,107 @@ +6-8. 다음 중 생성자에 대한 설명으로 옳지 않은 것은? (모두 고르시오) +a. 모든 생성자의 이름은 클래스의 이름과 동일해야한다. +b. 생성자는 객체를 생성하기 위한 것이다. +c. 클래스에는 생성자가 반드시 하나 이상 있어야 한다. +d. 생성자가 없는 클래스는 컴파일러가 기본 생성자를 추가한다. +e. 생성자는 오버로딩 할 수 없다. + +정답 : b, c, e +b : 생성자는 객체의 초기화를 위한 매서드이다. +c : 클래스에 생성자가 없을 경우 컴파일러가 자동적으로 매개변수가 없는 기본 생성자를 추가한다. +e : 생성자는 오버로딩이 가능하다. + +6-9. 다음 중 this에 대한 설명으로 맞지 않은 것은? (모두 고르시오) +a. 객체 자신을 가리키는 참조변수이다. +b. 클래스 내에서라면 어디서든 사용할 수 있다. +c. 지역변수와 인스턴스변수를 구별할 때 사용한다. +d. 클래스 메서드 내에서는 사용할 수 없다. + +정답 : b +b : this는 생성자를 포함한 인스턴스 메서드 내에서만 사용 가능하다. + +6-10. 다음 중 오버로딩이 성립하기 위한 조건이 아닌 것은? (모두 고르시오) +a. 메서드의 이름이 같아야 한다. +b. 매개변수의 개수나 타입이 달라야 한다. +c. 리턴타입이 달라야 한다. +d. 매개변수의 이름이 달라야 한다. + +정답 : c, d +c : 반환 타입과는 관련이 없다. +d : 매개변수의 이름은 정하기 나름이므로 의미가 없다. + + + +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 +a는 매개변수 이름만 바꾼 것으로 아무 의미가 없다. + + +6-12. 다음 중 초기화에 대한 설명으로 옳지 않은 것은? (모두 고르시오) +a. 멤버변수는 자동 초기화되므로 초기화하지 않고도 값을 참고할 수 있다. +b. 지역변수는 사용하기 전에 반드시 초기화해야 한다. +c. 초기화 블럭보다 생성자가 먼저 수행된다. +d. 명시적 초기화를 제일 우선적으로 고려해야 한다. +e. 클래스변수보다 인스턴스변수가 먼저 초기화된다 + +정답 : c, e +c : 초기화 순서는 기본값 - 명시적 초기화 - 초기화 블럭 - 생성자 순서이다. +e : 클래스 변수는 클래스가 처음 로딩될 때 바로 초기화되므로 인스턴스 변수보다 먼저 초기화된다. + +6-13. 다음 중 인스턴스변수의 초기화 순서가 올바른 것은? +a. 기본값-명시적초기화-초기화블럭-생성자 +b. 기본값-명시적초기화-생성자-초기화블럭 +c. 기본값-초기화블럭-명시적초기화-생성자 +d. 기본값-초기화블럭-생성자-명시적초기화 + +정답 : a + +6-14. 다음 중 지역변수에 대한 설명으로 옳지 않은 것은? (모두 고르시오) +a. 자동 초기화되므로 별도의 초기화가 필요없다. +b. 지역변수가 선언된 메서드가 종료되면 지역변수도 함께 소멸된다. +c. 메서드의 매개변수로 선언된 변수도 지역변수이다. +d. 클래스변수나 인스턴스변수보다 메모리 부담이 적다. +e. 힙(heap)영역에 생성되며 가비지 컬렉터에 의해 소멸된다. + +정답 : a, e + +a : 지역변수는 반드시 초기화 후 사용해야 한다. +e : 지역변수는 stack 영역에 생성된다. + +6-15. 호출스택이 다음과 같은 상황일 때 옳지 않은 설명은? (모두 고르시오) +a. 제일 먼저 호출스택에 저장된 것은 main메서드이다. +b. println메서드를 제외한 나머지 메서드들은 모두 종료된 상태이다. +c. method2메서드를 호출한 것은 main메서드이다. +d. println메서드가 종료되면 method1메서드가 수행을 재개한다. +e. main-method2-method1-println의 순서로 호출되었다. +f. 현재 실행중인 메서드는 println뿐이다. + +정답 : b +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 + +change(String str)에서 변수를 참조형 매개변수가 아닌 기본형 매개변수로 지정했기 때문에 +main 안의 str 값을 복사해서 넘어간 것이므로 str의 값은 변하지 않는다. \ No newline at end of file diff --git a/src/kimdongmin/report7/Report7_1.java b/src/kimdongmin/report7/Report7_1.java new file mode 100644 index 0000000..e197e50 --- /dev/null +++ b/src/kimdongmin/report7/Report7_1.java @@ -0,0 +1,36 @@ +package kimdongmin.report7; + +import java.util.Arrays; + +public class Report7_1 { +} + +//6-17. 다음과 같이 정의된 메서드를 작성하고 테스트하세요. +// 메서드명 : shuffle +// 기능 +// 주어진 배열에 담긴 값의 위치를 바꾸는 작업을 반복하여 뒤섞이게 한다. +// 처리한 배열을 반환한다. +// 반환타입 : int[] +// 매개변수 : int[] arr - 정수값이 담긴 배열 +class Exercise6_17 { + + /*shuffle 메서드를 작성하세요. */ + static int[] shuffle(int[] arr) { + for (int i=0;i MIN_VOLUME) + volume--; + } + void channelUp() { + // (4) channel의 값을 1 증가시킨다. + // 만일 channel이 MAX_CHANNEL이면 , channel의 값을 MIN_CHANNEL로 바꾼다. + if (channel < MAX_CHANNEL) + channel++; + else channel = MIN_CHANNEL; + } + void channelDown() { + // (5) channel의 값을 1 감소시킨다 . + // 만일 channel이 MIN_CHANNEL이면, channel의 값을 MAX_CHANNEL로 바꾼다. + if (channel >MIN_CHANNEL) + channel--; + else channel = MAX_CHANNEL; + } +} + +class Exercise6_19 { + public static void main(String args[]) { + MyTv t = new MyTv(); + + System.out.println(t.isPowerOn); + t.turnOnOff(); + System.out.println(t.isPowerOn); + t.turnOnOff(); + System.out.println(t.isPowerOn); + + 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 \ No newline at end of file diff --git a/src/kimdongmin/report7/Report7_4.java b/src/kimdongmin/report7/Report7_4.java new file mode 100644 index 0000000..83da704 --- /dev/null +++ b/src/kimdongmin/report7/Report7_4.java @@ -0,0 +1,37 @@ +package kimdongmin.report7; + +public class Report7_4 { +} + +//6-20. 다음과 같이 정의된 메서드를 작성하고 테스트하세요. +// 메서드명 : max +// 기능 +// 주어진 int형 배열의 값 중에서 제일 큰 값을 반환한다. +// 만일 주어진 배열이 null이거나 크기가 0인 경우, -999999를 반환한다. +// 반환타입 : int +// 매개변수 : int[] arr - 최대값을 구할 배열 +class Exercise6_20 { + /* (1) max 메서드를 작성하시오 . */ + static int max(int[] arr) { + if (arr == null || arr.length == 0) + return -999999; + else { + int j = 0; + for (int i=0;i < arr.length; i++) { + if (j < arr[i]) + j = arr[i]; + } + return j; + } + } + + 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 \ No newline at end of file diff --git a/src/kimdongmin/report7/Report7_5.java b/src/kimdongmin/report7/Report7_5.java new file mode 100644 index 0000000..72bba41 --- /dev/null +++ b/src/kimdongmin/report7/Report7_5.java @@ -0,0 +1,25 @@ +package kimdongmin.report7; + +public class Report7_5 { +} + +//6-21. 다음과 같이 정의된 메서드를 작성하고 테스트하시오. +// 메서드명: abs +// 기능 : 주어진 값의 절대값을 반환한다. +// 반환타입 : int +// 매개변수 : int value +class Exercise6_21 { + /* (1) abs 메서드를 작성하시오. */ + static int abs(int value) { + if (value >=0) + return value; + else 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 \ No newline at end of file