ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [팀프로젝트] 호텔예약프로그램 1
    스파르타코딩클럽/자바 팀프로젝트 - 호텔예약프로그램 2023. 10. 24. 21:56

    1.정규식

     

     

    선택사항인데 제일 먼저 구현한 이유는 생각보다 쉬워서? 였다.

    아마 직접 다 만들라고 하면 못 만들었겠지만  정규식이 뭔지 궁금해서 구글링해본 모든 글에

    예시코드가 있었기에 쉽게 작성할 수 있었다.

     

    그러나 이전 프로젝트에서도 그랬듯 응용은 전혀 다른 문제였고

    원래는 고객클래스 생성자의 매개변수에서 휴대폰번호를 받아와서 

    정규식과 비교하여 일치하지않으면

    더이상 입력이 되지 않도록 하려 하였으나,

    실제로 실행했을때  휴대폰번호가 정규식과 일치하지 않더라도

    모든 스캐너변수를 다 입력받고 나서야

    일치하지 않는다는 메세지가 떴다.

     

    이 부분에 대한 해결을 위해 튜터님에게 질문을 드렸는데 

    정규화를 생성자에서 받아오는 것보다

    메인에서 따로 메소드를 하나 생성한 다음에 이것을 활용하는 것이 더 좋다고 하셔서

    해당 조언을 바탕으로 새로 메소드를 생성하여

    그 안에 정규식과 입력 매개변수를 비교하는 코드를 작성하였다.

     

    하지만 휴대폰 번호를 틀려도 switch문이 중단되지 않고 계속 진행되는 바람에 상당히 곤란했다.

    멈추게 하기 위해 return null,  break 등 여러 방법을 써보았지만 해당 로직을 변경할 수가 없었다.

     

    다만 return null을 했을때 nullPointerException 예외처리를 해야했는데

    이를 처리하며  강제로 예외를 생성하여

    멈추게하면 되겠다는 아이디어를 얻었고,

    휴대폰번호가 정규식과 일치하지 않을 경우 강제로 예외가 생성됨으로써 성공적으로 switch문을 멈출 수 있었다.

     

     

     

    TMI.

    String regexPhoneNum = " ^010-[0-9]{4}-[0-9]{4}$";

    " 정규식"   이런식으로 "와 정규식 사이에 공백이 있으면 입력할때 공백까지 같이 입력해야하는데

    입력하는 사람은 그걸 모르니 어떤 방식으로 입력해도 에러가 난다.

    어떻게 아냐구요?

     

    저도 알고싶지않았습니다...

     

     

     

    멘탈 빠개짐

    각자 코드를 어느정도 완성하고

    Merge 대재앙을 겪으며 가져올 메소드는 성공적으로 가져왔다고 생각했는데

     

     

    이 에러가 엄청나게 떴다.

    다른 팀원들이 실행했을때는 성공적으로 잘 돌아갔고,

    나도 빼먹은 코드없이 merge 잘 해놨는데 이런 에러가 뜨니 미칠 노릇이었다.

    심지어 ide에는 표시도 되지 않는 에러였기에  입력과정에서 무슨 문제가 생긴건 알겠는데

    대체 원인이 어디인지 알수가 없었다.

     

    결국계시는 튜터님께 다시 질문을 드렸고, 

    대충 어느 부분이 문제일것 같다라고 말씀하실때쯤

     

    설마하는 생각이 들어서

    내 코드를 찾아보았다.

     

    왜 문제가 생겼는지 눈치채실분은 눈치 채셨을 것이다.

     

    에러가 발생하는 코드 바로 위의 내 코드이다.

    money는 데이터타입이 int이며   

    inputMoneyInfo 메소드도 당연히 return값이 sc.nextInt 이다.

     

    올바르게 입력했을때 nextLine()코드가 없어서  다음 스캐너 입력까지 nextInt가 영향을 미치는 것이다.

    그래서 catch문 안에 있는 nextLine()을  catch문 밖으로 빼고 돌려보니 정상적으로 잘 실행이 되더라.

     

    진짜 이때 멘탈이 완전히 나갔다.

    팀원들 끝나고도 30분 가까이 붙잡아둔 원인이 내 사소한 코드 한줄때문이었다니

    이 글을 쓰는 지금도 멘탈이 회복이 안된 상태다.

     

    튜터님께 디버깅 하는 과정을 배웠지만, 솔직히 지금 머리에 하나도 남아있지 않은 것 같다.

    다음부턴 이런 실수가 없도록 해야겠다.

    진짜로

    진심임

     

Designed by Tistory.