목록분류 전체보기 (45)
일상기록

문자열 덧셈 계산기를 통한 TDD/리팩토링 실습 기능 요구사항 쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 전달하는 경우 구분자를 기준으로 분리한 각 숫자의 합을 반환 (예: “” => 0, "1,2" => 3, "1,2,3" => 6, “1,2:3” => 6) 앞의 기본 구분자(쉼표, 콜론)외에 커스텀 구분자를 지정할 수 있다. 커스텀 구분자는 문자열 앞부분의 “//”와 “\n” 사이에 위치하는 문자를 커스텀 구분자로 사용한다. 예를 들어 “//;\n1;2;3”과 같이 값을 입력할 경우 커스텀 구분자는 세미콜론(;)이며, 결과 값은 6이 반환되어야 한다. 문자열 계산기에 숫자 이외의 값 또는 음수를 전달하는 경우 RuntimeException 예외를 throw한다. 프로그래밍 요구사항 inde..

Gradle 프로젝트에서 main매서드 실행 하는 방법은 크게 두가지 있다. 하나는 build.gradle파일이 있는 디렉토리로 이동해서 ./gradlew build 명령어를 입력하면 프로젝트를 빌드하고, build/libs 디렉토리에 Jar 파일을 생성한다. $ ./gradlew build 버전에 문제가 있거나 자바코드가 자바특정버전이 안맞을경우 이러한 에러가 발생한다. gradle 버전과 자바버전 수정은 이곳을 참고하면 된다. 그외에도 Test케이스가 있는경우 모두 통과해야 에러없이 빌드 후 jar파일이 생성 된다. $ java -jar build/libs/.jar 명령어로 jar파일을 실행하면 된다. 또 다른 방법은 JVM으로 실행가능하다. 내가 하는 프로젝트는 간단한 프로젝트라 JVM으로 실행 하..

인텔리제이 사용시 가끔 자바 코드 버전과 인텔리제이 설정의 jdk 버전이 안맞아 오류가 나는 경우가 있다. 그래서 버전을 맞춰 줬음에도 gradle 버전이 낮거나 높은경우에도 에러가 발생하게 된다. 그림과 같이 wrapper > gradle-wrapper.properties 파일에서 distributionUrl을 수정해주면 된다. gradle 버전의 종류는 아래 링크로 들어가면 나온다. distributionUrl 수정이후 Lode Gradle Changes를 해주면 자동으로 설치 된다. 인텔리제이 자바 버전 수정시 Settings > Gradle (Gradle JVM 변경) Settings > Compiler > java Compiler (Project bytecode version 변경) File ..

기능 요구 사항 기본적으로 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 맞추는 게임이다. 같은 수가 같은 자리에 있으면 스트라이크, 다른 자리에 있으면 볼, 같은 수가 전혀 없으면 포볼 또는 낫싱이란 힌트를 얻고, 그 힌트를 이용해서 먼저 상대방(컴퓨터)의 수를 맞추면 승리한다. e.g. 상대방(컴퓨터)의 수가 425일 때, 123을 제시한 경우 : 1스트라이크, 456을 제시한 경우 : 1볼 1스트라이크, 789를 제시한 경우 : 낫싱 위 숫자 야구 게임에서 상대방의 역할을 컴퓨터가 한다. 컴퓨터는 1에서 9까지 서로 다른 임의의 수 3개를 선택한다. 게 임 플레이어는 컴퓨터가 생각하고 있는 3개의 숫자를 입력하고, 컴퓨터는 입력한 숫자에 대한 결과를 출력한다. 이 같은 과정을 반복해 컴퓨터가..
자바 플레이그라운드 with TDD, 클린 코드 과정의 문자열 계산기 이다. 요구사항 사용자가 입력한 문자열 값에 따라 사칙연산을 수행할 수 있는 계산기를 구현해야 한다. 문자열 계산기는 사칙연산의 계산 우선순위가 아닌 입력 값에 따라 계산 순서가 결정된다. 즉, 수학에서는 곱셈, 나눗셈이 덧셈, 뺄셈 보다 먼저 계산해야 하지만 이를 무시한다. 예를 들어 "2 + 3 * 4 / 2"와 같은 문자열을 입력할 경우 2 + 3 * 4 / 2 실행 결과인 10을 출력해야 한다. 기존의 자바코드만 가지고 Test 코드를 짠다면 아래와 같이 간단하게 만들수 있다. @Test void calculatorTest_Addition() { String input = "2 + 3 * 4 / 2"; String[] value..

@ParameterizedTest 자바 플레이그라운드 with TDD, 클린 코드 과정중 중복코드 제거 관련된 문제이다. public class SetTest { private Set numbers; @BeforeEach void setUp() { numbers = new HashSet(); numbers.add(1); numbers.add(1); numbers.add(2); numbers.add(3); } // Test Case 구현 } 결과는 [1, 2, 3]으로 나온다. 이를 확인하기위해 contains() 매서드로 확인 하는 코드를 만들면 @Test void contains() { assertThat(numbers.contains(1)).isTrue(); assertThat(numbers.cont..