diff --git a/src/main/java/Problem/lcqff/Chapter5/Calculator.java b/src/main/java/Problem/lcqff/Chapter5/Calculator.java index 63ea038..b2dd3ed 100644 --- a/src/main/java/Problem/lcqff/Chapter5/Calculator.java +++ b/src/main/java/Problem/lcqff/Chapter5/Calculator.java @@ -1,5 +1,7 @@ package Problem.lcqff.Chapter5; +import java.util.ArrayList; + public class Calculator { int value; @@ -8,6 +10,21 @@ public class Calculator { this.value = 0; } + int avg(int[] data) { + int sum = 0; + for (int num:data) sum += num; + return sum/ data.length; + } + + int avg(ArrayList data) { + int sum = 0; + for (int num:data) sum += num; + return sum/ data.size(); + } + + boolean isOdd(int num) { + return num%2==0 ? false : true; + } void add(int val) { this.value += val; } diff --git a/src/main/java/Problem/lcqff/Chapter5/Q01.java b/src/main/java/Problem/lcqff/Chapter5/Q01.java index e98bc1b..151d6df 100644 --- a/src/main/java/Problem/lcqff/Chapter5/Q01.java +++ b/src/main/java/Problem/lcqff/Chapter5/Q01.java @@ -2,21 +2,22 @@ public class Q01 { - /** - * UpgradeCalculator - */ + public static class UpgradeCalculator extends Calculator { + void minus(int num) { + this.value -= num; + } + } + public static void main(String[] args) { Calculator cal = new Calculator(); cal.add(10); - System.out.println(cal.getValue()); // 10 출력 + System.out.println("Calculator value:"+cal.getValue()); // 10 출력 // TODO: Calculator 클래스를 상속하는 UpgradeCalculator를 만들고 값을 뺄 수 있는 minus 메서드를 추가해 보자. - /** 다음과 같이 동작하는 클래스를 만들어야 한다. - * - * UpgradeCalculator cal = new UpgradeCalculator(); - * cal.add(10); - * cal.minus(3); - * System.out.println(cal.getValue()); // 10에서 3을 뺀 7을 출력 - */ + UpgradeCalculator upgradedCal = new UpgradeCalculator(); + upgradedCal.add(10); + upgradedCal.minus(3); + System.out.println("UpgradeCalculator value:"+upgradedCal.getValue()); } } + diff --git a/src/main/java/Problem/lcqff/Chapter5/Q02.java b/src/main/java/Problem/lcqff/Chapter5/Q02.java index 1f0366c..312dd2f 100644 --- a/src/main/java/Problem/lcqff/Chapter5/Q02.java +++ b/src/main/java/Problem/lcqff/Chapter5/Q02.java @@ -2,18 +2,24 @@ public class Q02 { - /** - * MaxLimitCalculator - */ + public static class MaxLimitCalculator extends Calculator { + void add(int num) { + if (value+num<=100) + value += num; + else { + System.out.println("100 넘으면 안됨!! num should be less then "+(100-value)); + } + } + } + public static void main(String[] args) { // TODO: 객체변수 value가 100 보다 큰 값은 가질 수 없도록 제한하는 MaxLimitCalculator 클래스를 만들어 보자. - - /** 다음과 같이 동작하는 클래스를 만들어야 한다. (단 MaxLimitCalculator 클래스는 반드시 다음의 Calculator 클래스를 상속해서 만들어야 한다.) - * - * MaxLimitCalculator cal = new MaxLimitCalculator(); - * cal.add(50); // 50 더하기 - * cal.add(60); // 60 더하기 - * System.out.println(cal.getValue()); // 100 출력 - * */ + MaxLimitCalculator MaxLimitCal = new MaxLimitCalculator(); + MaxLimitCal.add(50); + MaxLimitCal.add(60); + System.out.println("current value:" + MaxLimitCal.getValue()); } } + + + diff --git a/src/main/java/Problem/lcqff/Chapter5/Q03.java b/src/main/java/Problem/lcqff/Chapter5/Q03.java index 5443fb9..2a11c7e 100644 --- a/src/main/java/Problem/lcqff/Chapter5/Q03.java +++ b/src/main/java/Problem/lcqff/Chapter5/Q03.java @@ -1,16 +1,10 @@ package Problem.lcqff.Chapter5; public class Q03 { - - /** - * 홀수 짝수 판별하기 - */ public static void main(String[] args) { // TODO: 다음과 같이 주어진 정수가 홀수인지 짝수인지 판별해 주는 Calculator 클래스의 메서드를 작성하시오. (홀수이면 true, 짝수면 false를 리턴해야 한다.) - /** - * Calculator cal = new Calculator(); - * System.out.println(cal.isOdd(3)); // 3은 홀수이므로 true 출력 - * System.out.println(cal.isOdd(4)); // 4는 짝수이므로 false 출력 - */ + Calculator cal = new Calculator(); + System.out.println(cal.isOdd(3)); // 3은 홀수이므로 true 출력 + System.out.println(cal.isOdd(4)); // 4는 짝수이므로 false 출력 } } diff --git a/src/main/java/Problem/lcqff/Chapter5/Q04.java b/src/main/java/Problem/lcqff/Chapter5/Q04.java index 8687c10..19815a6 100644 --- a/src/main/java/Problem/lcqff/Chapter5/Q04.java +++ b/src/main/java/Problem/lcqff/Chapter5/Q04.java @@ -1,27 +1,21 @@ package Problem.lcqff.Chapter5; -public class Q04 { +import java.util.ArrayList; +import java.util.Arrays; - /** - * 평균값을 구하는 메서드 - */ +public class Q04 { public static void main(String[] args) { // TODO: 다음과 같이 정수 배열 또는 정수의 리스트로 그 평균값을 구해 리턴하는 Calculator 클래스를 작성하시오. (메서드 오버로딩을 사용해 보자.) + int[] data = {1, 3, 5, 7, 9}; + Calculator cal = new Calculator(); + int result1 = cal.avg(data); + System.out.println("average1: "+result1); // 5 출력 - /** 정수 배열 사용 예 - * - * int[] data = {1, 3, 5, 7, 9}; - * Calculator cal = new Calculator(); - * int result = cal.avg(data); - * System.out.println(result); // 5 출력 - */ + ArrayList data2 = new ArrayList<>(Arrays.asList(1, 3, 5, 7, 9)); + Calculator cal2 = new Calculator(); + int result2 = cal2.avg(data2); + System.out.println("average2: "+result2); // 5 출력 - /** 정수 리스트 사용 예 - * ArrayList data = new ArrayList<>(Arrays.asList(1, 3, 5, 7, 9)); - * Calculator cal = new Calculator(); - * int result = cal.avg(data); - * System.out.println(result); // 5 출력 - */ } } diff --git a/src/main/java/Problem/lcqff/Chapter5/Q05.java b/src/main/java/Problem/lcqff/Chapter5/Q05.java index 2b6f601..c7e5b3d 100644 --- a/src/main/java/Problem/lcqff/Chapter5/Q05.java +++ b/src/main/java/Problem/lcqff/Chapter5/Q05.java @@ -11,9 +11,9 @@ public class Q05 { public static void main(String[] args) { // TODO: 다음 프로그램의 출력결과를 예측하고 그 이유에 대해서 주석으로 설명하시오. - ArrayList a = new ArrayList<>(Arrays.asList(1, 2, 3)); - ArrayList b = a; - a.add(4); - System.out.println(b.size()); + ArrayList a = new ArrayList<>(Arrays.asList(1, 2, 3)); // a는 ArrayList 객체를 참조하고 있다. + ArrayList b = a; // 새로운 변수 b에 a를 할당하므로써 a와 b는 동일한 ArrayList 객체를 참조하게 된다. + a.add(4); //a가 참조하는 ArrayList에 4를 추가한다. 이는 b가 참조하고 있는 arrayList와 동일하다. + System.out.println(b.size()); //b가 참조하는 ArrayList의 크기를 출력한다. } } diff --git a/src/main/java/Problem/lcqff/Chapter5/Q06.java b/src/main/java/Problem/lcqff/Chapter5/Q06.java index 8ebd318..1fa9fe4 100644 --- a/src/main/java/Problem/lcqff/Chapter5/Q06.java +++ b/src/main/java/Problem/lcqff/Chapter5/Q06.java @@ -10,5 +10,8 @@ public static void main(String[] args) { Calculator cal = new Calculator(); cal.add(3); // 여기서 NullPointerException 이 발생한다. System.out.println(cal.getValue()); + + // Integer 클래스를 사용해 선언된 변수는 null로 초기화 된다. 따라서 초기화 하지 않고 사용할 경우 NullPointException이 발생한다. + // int로 선언된 변수는 기본적으로 0으로 초기화된다. 따라서 따로 초기화 하지 않아도 NullPointException이 발생하지 않는다. } }