티스토리 뷰

5장까지 총 23개의 연습문제가 있습니다. 이 중 한 문제를 골라 풀이과정을 작성해 주세요.

연습 문제 22 (p223)

입력 칸에 들어온 문자열 값을 검증하고 18에서 150사이의 정수로 바꿔야 하는 상황이다.
전체 변환은 다음과 같다.

문자열 입력 내용
-> [검증 및 변환]
    -> {:ok, 값} | {:error, 원인}

"검증 및 변환"을 구성하는 개별 변환들을 작성하라.


풀이 과정

위 소스를 검증과 변환 작업을 거치는 소스로 변환하면, 아래와 같다.

문자열 입력 내용
-> [문자에서 정수로 변환이 가능한지 검사]
-> [문자에서 정수로 변환]
-> [18 ~ 150 사이의 정수인지 검사]
    -> {:ok, 값} | {:error, 원인}
List<Integer> nums = strs.stream()
                        .filter(str -> isToNumber(str))
                        .map(str -> Integer.valueOf(str))
                        .filter(num -> isSatisfy(num))
                        .collect(Collectors.toList());

  1. 문자열이 정규표현식(^[^0]\d*) 등을 이용하여, 정수로 변환이 가능한지 검사한다.
    1.1 정수로 변환이 가능하면 2로 이동
    1.2 정수로 변환이 불 가능하다면 {:error, notValid}
  1. 문자를 정수로 변환(1에서 정수로 변환 가능한 문자를 받았으므로, error 발생 X)
  1. 변환된 정수가 18 ~ 150 사이의 정수인지 검사한다.
    3.1 18 ~ 150 사이의 정수라면 {:ok, value}
    3.2 그 밖의 정수라면 {:error, notValid}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함