Post

Section 07 연습문제

강의

https://www.udemy.com/course/best-java-programming/

41 sections • 452 lectures • 38h 8m total length

03 Coding Exercise 3: 코딩 예제: 시간 변환기

값을 백 번, 천 번 쓸거면 변수 만드는게 좋고, 한 번만 사용되면 바로 리턴하는게 좋다~

04 코딩 예제: 시험 결과 확인기

평가값이 바로 불리언이란 생각을 못해봤다 쩐다

1
2
3
4
5
6
7
public class ExamResult {
    
    public boolean isPass(int marks) {
        // Update Code : If the student's marks are greater than 50, they have passed the exam.
        return marks > 50
    }
}

05 코딩 예제: 유효한 삼각형인지 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class TriangleValidator {
    public boolean isValidTriangle(int angle1, int angle2, int angle3) {
        int[] angles = {angle1, angle2, angle3};
        
        // 배열을 반복하면서 각각의 각도가 양수인지 확인
        for (int angle : angles) {
            if (angle <= 0) {
                return false; // 하나라도 양수가 아니면 유효하지 않음
            }
        }
        
        // 각도의 합이 180이면 유효한 삼각형으로 간주
        if (angle1 + angle2 + angle3 == 180) {
            return true;
        }
        
        // 하나라도 양수가 아니거나 각도의 합이 180이 아니면 유효하지 않음
        return false;
    }
}

배열 타입을 표시하는 것과 enhanced for loop 를 처음 접했다.

선생님 답

1
2
3
4
5
6
7
public class TriangleValidator {
    public boolean isValidTriangle(int angle1, int angle2, int angle3) {
        // ...중략
        int sumOfAngles = angle1 + angle2 + angle3;  
        return sumOfAngles == 180;
    }
}

06 코딩 예제: 직각삼각형일까요?

내 답

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Arrays;

public class TriangleValidator {
  public boolean isRightAngled(int side1, int side2, int side3) {
    if (side1 <= 0 || side2 <= 0 || side3 <= 0) {
      return false;
    }

    int[] sortedList = { side1, side2, side3 };

    Arrays.sort(sortedList);

    if (
        (Math.pow(sortedList[0], 2) +  Math.pow(sortedList[1], 2)) == Math.pow(sortedList[2], 2)
    ) return true;

    return false;
  }
}
  • Arrays.sort 를 쓰려면 java.util.Arrays 를 불러와야 한다.
  • 정수보다 모두 커야한다가 조건이라면 side1 <= 0 side2 <= 0 side3 <= 0 이렇게 검사해야한다.
  • int[] 에 요소를 넣고 싶다면 {} 를 써야한다.
  • Math.pow() 는 매개변수가 2개 이다.

07

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class SumOfSquares {
    public long calculateSumOfSquares(int n) {
       // write your code here
       
       if (n < 0){
        return -1;
       }
       
       int result = 0;
       
       for(int i = n; i > 0; i--){
           result += Math.pow(i,2);
       }
       
       return result;
    }
}

메서드는 일반화 할수록 쓸모가 있습니다.

Save Actions 잘 쓰자

[x] Organize imports https://xojuholic.tistory.com/58 https://code.visualstudio.com/docs/java/java-refactoring#_refactoring

[x] format edited lines

[x] java prettier formatter https://momobob.tistory.com/43

아직은 모듈 만들라고 할때 module name 입력하지 말고 dont create

MultiplicationTable 메서드의 중복을 제거하는 법

Q : 코드의 중복이 많고 유지보수가 불편하져~ 어떻게 하면 좋을지 생각해봐용

A : 디폴트 파라미터를 쓴다? (x) 자바에는 디폴트 파라미터가 없다.

우리가 지금 한 건 ‘리팩터링’인데, 리팩터링은 코드의 기능을 건드리지 않으면서

구조에만 변화를 주는 것이죠

코드의 기능은 바꾸지 않으면서 ‘print’가 입력된 방식만 바꿨습니다

우리는 테이블 형식으로 인쇄하는 메서드의 기능은 그대로 놔두고 표가 인쇄되는 방식만 바꿨습니다

대부분의 경우 코드를 완벽하게 만드는 것은 어렵기 때문에 이해와 학습으로

본인의 코드를 개선하는 더 나은 아이디어를 생각해내는 것이 리팩터링의 본질입니다

This post is licensed under CC BY 4.0 by the author.