개발/자바웹개발

커뮤니티 게시판 구현(콘솔, 회원/게시글 파일저장)

kyle109 2021. 8. 2. 11:05

학원에서 그동안 배웠던 것을 토대로 콘솔창에 커뮤니티 게시판을 만들어봤습니다.

조건은 아래와 같습니다.

  1. 클래스 2개(회원, 게시판)
  2. 객체를 저장하는 파일 2개
  3. 콘솔에 떠야 할 메뉴
    1. 메뉴-로그인/회원가입
    2. 로그인시메뉴-게시물출력+글작성/글보기/로그아웃
    3. 글보기선택-글정보출력+수정/삭제/뒤로가기)

어려움을 겪었던 부분은 크게 4가지였습니다.

첫번째로 분기가 많다보니 분기별로 작동해야할 코드를 제자리에 놓지 못하고, 중괄호의 위치를 잘못 선택했습니다. 초반에 제대로 정리하지 않고 코드를 작성하다 보니 나중에 맨뒷줄 중괄호부터 어느 범위인지 일일이 클릭해서 확인해보는 불상사가 발생했습니다.
=>해결책으로 중괄호가 생길때마다 중괄호 시작과 끝부분에 어느 기능의 시작과 끝인지 명시하기로 했습니다.

두번째로 몇 번을 해도 계속 틀리는 String을 조건문에 넣었을 때, 일치여부를 "=="로 판단하는 것입니다. 파이썬을 길게 사용하다 보니 습관적으로 "=="을 사용해 조건문이 제대로 작동하지 않았습니다. 
=>해결책이라기 보다는 대응책으로 코드를 작성 후 원하는 분기로 안 넘어가면 먼저 String의 일치여부를 판단하는 코드가 있는지 찾아보고, 있다면 .equals(비교대상)을 제대로 사용했는지 확인하겠습니다.

세번째로 Scanner객체의 입력시 문자열을 입력받을 때 연달아서 입력을 받는 경우에 입력을 건너뛴다는 점이었습니다. 검색을 해본 결과 next()은 개행문자인 \n전까지 출력하고 버퍼에 \n이 남아있다고 합니다. 또한 \n을 한 줄로 인식한다고 나와있어서 문제가 생긴것으로 생각됩니다. 제가 찾아본 방법은 next()을 쓴 뒤에 scanner.nextLine()하나 더 집어넣는 것입니다.

네번째 문제는 try{} catch(){}안에 파일입출력을 하나씩만 넣어야 한다는 것이었습니다. 코드를 실행하면 먼저 회원파일과 게시판파일에 있는 값을 프로그램 내의 객체배열로 읽어와야 하는데, 이 과정에서 처음에 하나의 try/catch문 안에 두 파일 입출력을 넣었더니, 처음 파일입출력만 진행하고, 그 뒤의 파일입출력은 진행하지 않았습니다.

코드는 채점이 되고 정답이라는 답변을 들으면 올려보겠습니다.