Skip to content

Commit

Permalink
Merge pull request #35 from KEEPER31337/problem5-yejun
Browse files Browse the repository at this point in the history
problem5-yejun
  • Loading branch information
shkisme authored Jul 19, 2023
2 parents 0d50153 + 8c6da84 commit dc06ae1
Show file tree
Hide file tree
Showing 15 changed files with 90 additions and 104 deletions.
21 changes: 21 additions & 0 deletions src/main/java/Problem/yejun/Chapter5/Calculator.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package Problem.yejun.Chapter5;

import java.util.ArrayList;

public class Calculator {

int value;
Expand All @@ -16,4 +18,23 @@ int getValue() {
return this.value;
}

boolean isOdd(int val) {
return (val % 2 == 1);
}

int avg(int[] arr) {
int sum = 0;
for (int n : arr) {
sum += n;
}
return sum / arr.length;
}

int avg(ArrayList<Integer> arr) {
int sum = 0;
for (int n : arr) {
sum += n;
}
return sum / arr.size();
}
}
22 changes: 8 additions & 14 deletions src/main/java/Problem/yejun/Chapter5/Q01.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,15 @@

public class Q01 {

/**
* UpgradeCalculator
*/
public static class UpgradeCalculator extends Calculator {
public void minus(int val) {
value -= val;
}
}
public static void main(String[] args) {
Calculator cal = new Calculator();
UpgradeCalculator cal = new UpgradeCalculator();
cal.add(10);
System.out.println(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을 출력
*/
cal.minus(3);
System.out.println(cal.getValue());
}
}
27 changes: 15 additions & 12 deletions src/main/java/Problem/yejun/Chapter5/Q02.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,21 @@

public class Q02 {

/**
* MaxLimitCalculator
*/
public static void main(String[] args) {
// TODO: 객체변수 value가 100 보다 큰 값은 가질 수 없도록 제한하는 MaxLimitCalculator 클래스를 만들어 보자.
public static class MaxLimitCalculator extends Calculator {

@Override
void add(int val) {
this.value += val;
if (100 < value) {
value = 100;
}
}
}

/** 다음과 같이 동작하는 클래스를 만들어야 한다. (단 MaxLimitCalculator 클래스는 반드시 다음의 Calculator 클래스를 상속해서 만들어야 한다.)
*
* MaxLimitCalculator cal = new MaxLimitCalculator();
* cal.add(50); // 50 더하기
* cal.add(60); // 60 더하기
* System.out.println(cal.getValue()); // 100 출력
* */
public static void main(String[] args) {
MaxLimitCalculator cal = new MaxLimitCalculator();
cal.add(50);
cal.add(60);
System.out.println(cal.getValue());
}
}
12 changes: 3 additions & 9 deletions src/main/java/Problem/yejun/Chapter5/Q03.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,9 @@

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));
System.out.println(cal.isOdd(4));
}
}
31 changes: 12 additions & 19 deletions src/main/java/Problem/yejun/Chapter5/Q04.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,20 @@
package Problem.yejun.Chapter5;

public class Q04 {
import java.util.ArrayList;
import java.util.Arrays;

/**
* 평균값을 구하는 메서드
*/
public static void main(String[] args) {
public class Q04 {

// TODO: 다음과 같이 정수 배열 또는 정수의 리스트로 그 평균값을 구해 리턴하는 Calculator 클래스를 작성하시오. (메서드 오버로딩을 사용해 보자.)

/** 정수 배열 사용 예
*
* int[] data = {1, 3, 5, 7, 9};
* Calculator cal = new Calculator();
* int result = cal.avg(data);
* System.out.println(result); // 5 출력
*/
public static void main(String[] args) {
int[] data = {1, 3, 5, 7, 9};
Calculator cal = new Calculator();
int result = cal.avg(data);
System.out.println(result); // 5 출력

/** 정수 리스트 사용 예
* ArrayList<Integer> data = new ArrayList<>(Arrays.asList(1, 3, 5, 7, 9));
* Calculator cal = new Calculator();
* int result = cal.avg(data);
* System.out.println(result); // 5 출력
*/
ArrayList<Integer> data2 = new ArrayList<>(Arrays.asList(1, 3, 5, 7, 9));
Calculator cal2 = new Calculator();
int result2 = cal2.avg(data2);
System.out.println(result2);
}
}
5 changes: 0 additions & 5 deletions src/main/java/Problem/yejun/Chapter5/Q05.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,7 @@

public class Q05 {

/**
* 리스트와 객체
*/
public static void main(String[] args) {
// TODO: 다음 프로그램의 출력결과를 예측하고 그 이유에 대해서 주석으로 설명하시오.

ArrayList<Integer> a = new ArrayList<>(Arrays.asList(1, 2, 3));
ArrayList<Integer> b = a;
a.add(4);
Expand Down
4 changes: 0 additions & 4 deletions src/main/java/Problem/yejun/Chapter5/Q06.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@

public class Q06 {

/**
* 생성자와 초깃값
*/
public static void main(String[] args) {
// TODO: 다음은 Calculator 객체를 생성하고 값을 더한 후에 그 결과값을 출력하는 예제이다. 하지만 코드를 실행하면 오류가 발생한다. 이 코드의 오류를 수정하시오.
Calculator cal = new Calculator();
cal.add(3); // 여기서 NullPointerException 이 발생한다.
System.out.println(cal.getValue());
Expand Down
6 changes: 5 additions & 1 deletion src/main/java/Problem/yejun/Chapter5/Q7/Bronze.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package Problem.yejun.Chapter5.Q7;

class Bronze {
class Bronze implements Mineral {

@Override
public int getValue() {
return 80;
}
}
11 changes: 5 additions & 6 deletions src/main/java/Problem/yejun/Chapter5/Q7/Gold.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package Problem.yejun.Chapter5.Q7;

/**
* 인터페이스 사용하기 다음은 광물의 가치를 계산하는 MineralCalculator 클래스와 그 사용법이 담긴 코드이다. 광물 계산기는 금인 경우 100, 은인 경우 90, 구리의 경우는 80의 가치를 더하는
* 기능(add 메스드)이 있다.
*/

class Gold {
class Gold implements Mineral {

@Override
public int getValue() {
return 100;
}
}
6 changes: 6 additions & 0 deletions src/main/java/Problem/yejun/Chapter5/Q7/Mineral.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package Problem.yejun.Chapter5.Q7;

public interface Mineral {

int getValue();
}
12 changes: 2 additions & 10 deletions src/main/java/Problem/yejun/Chapter5/Q7/MineralCalculator.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,8 @@ class MineralCalculator {

int value = 0;

public void add(Gold gold) {
this.value += 100;
}

public void add(Silver silver) {
this.value += 90;
}

public void add(Bronze bronze) {
this.value += 80;
public void add(Mineral mineral) {
this.value += mineral.getValue();
}

public int getValue() {
Expand Down
5 changes: 0 additions & 5 deletions src/main/java/Problem/yejun/Chapter5/Q7/Q07.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,6 @@

public class Q07 {

/**
* 하지만 이 광물 계산기는 광물이 추가될 때마다 add 메서드를 추가해야 한다는 단점이 있다.
* 광물이 추가되더라도 MineralCalculator 클래스를 변경할 필요가 없도록 코드를 수정하시오.
* (Mineral 인터페이스를 생성하고 광물 클래스에 적용해 보자.)
*/
public static void main(String[] args) {
MineralCalculator cal = new MineralCalculator();
cal.add(new Gold());
Expand Down
6 changes: 5 additions & 1 deletion src/main/java/Problem/yejun/Chapter5/Q7/Silver.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package Problem.yejun.Chapter5.Q7;

class Silver {
class Silver implements Mineral {

@Override
public int getValue() {
return 90;
}
}
13 changes: 4 additions & 9 deletions src/main/java/Problem/yejun/Chapter5/Q8_9/Q08.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,10 @@

public class Q08 {

/**
* 오류 찾기 1
* 다음의 코드를 보고 1번, 2번, 3번, 4번, 5번 문장 중에서 오류가 발생하는 문장을 모두 찾고 오류의 원인에 대해서 주석으로 설명하시오.
*/
public static void main(String[] args) {
// Animal a = new Animal(); // 1번
// Animal b = new Dog(); // 2번
// Animal c = new Lion(); // 3번
// Dog d = new Animal(); // 4번
// Predator e = new Lion(); // 5번
Animal a = new Animal();
Animal b = new Dog();
Animal c = new Lion();
Predator e = new Lion();
}
}
13 changes: 4 additions & 9 deletions src/main/java/Problem/yejun/Chapter5/Q8_9/Q09.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,14 @@

public class Q09 {

/**
* 오류 찾기 2 다음의 코드를 보고 1번, 2번, 3번, 4번, 5번, 6번 문장 중에서 오류가 발생하는 문장을 모두 찾고 오류의 원인에 대해서 주석으로 설명하시오.
*/
public static void main(String[] args) {
Animal a = new Lion();
Lion b = new Lion();
Predator c = new Lion();

// System.out.println(a.hello()); // 1번
// System.out.println(a.bark()); // 2번
// System.out.println(b.hello()); // 3번
// System.out.println(b.bark()); // 4번
// System.out.println(c.hello()); // 5번
// System.out.println(c.bark()); // 6번
System.out.println(a.hello());
System.out.println(b.hello());
System.out.println(b.bark());
System.out.println(c.bark());
}
}

0 comments on commit dc06ae1

Please sign in to comment.