사이먼's 코딩노트

[Java] Scanner / 게시판 제작(1) 본문

프로젝트/[Java] 게시판 제작

[Java] Scanner / 게시판 제작(1)

simonpark817 2024. 2. 19. 23:56

[게시판 제작]

  • 앞으로 Java를 통해 게시판을 만들어 볼 예정이고 해당 소스는 Github로 관리해 볼 예정입니다.
  • 작성된 모든 코드는 저의 깃허브 리포지터리에서 확인하실 수 있습니다.
  • 리포지터리 주소 URL : https://github.com/psm817/full_stack_proj_2024_03
 

GitHub - psm817/full_stack_proj_2024_03

Contribute to psm817/full_stack_proj_2024_03 development by creating an account on GitHub.

github.com

 

[게시판 작성]

  • 오늘은 게시판 제작 1차 작업으로 사용자 지정의 명령어를 생성하여 게시판의 제목과 내용을 작성하고 해당 게시글의 고유번호를 매기는 작업까지 해 볼 예정이다.
  • 아래 코드는 위에서 설명한 조건을 만족한 1차 작업이 완성된 코드이다.
package org.example;

import java.util.Scanner;

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
    public static void main(String[] args) {
        System.out.println("== 프로그램 시작 ==");
        Scanner sc = new Scanner(System.in);
        
        int lastArticleId = 0;

        while(true) {
            System.out.printf("명령어) ");
            String cmd = sc.nextLine();

            cmd = cmd.trim();
            
            if(cmd.length() == 0) {
                continue;
            }

            if(cmd.equals("system exit")) {
                break;
            }

            else if(cmd.equals("article list")) {
                System.out.println("게시물이 없습니다.");
            }

            else if(cmd.equals("article write")) {
                int id = lastArticleId + 1;
                System.out.printf("제목 : ");
                String title = sc.nextLine();
                System.out.printf("내용 : ");
                String body = sc.nextLine();

                lastArticleId = id;

                System.out.printf("%d번 글이 작성되었습니다.\n", id);
            }

            else {
                System.out.printf("%s(은)는 존재하지 않는 명령어입니다.\n", cmd);
            }
        }

        sc.close();

        System.out.println("== 프로그램 끝 ==");
    }
}
  • Main 메서드를 살펴보면 Scanner 클래스를 사용하여 키보드 입력을 받도록 되어있고, 우리가 흔히 알고있는 커맨드창 처럼 계속해서 명령어를 입력할 수 있도록 while(true) 무한 루프를 사용하였다.
  • cmd라는 변수에 nextLine() 메서드를 통해 문자열을 입력받아 리턴하도록 하였다.
  • cmd = cmd.trim(); 은 양옆에 있는 공백을 없애주는 역할이다. trim을 적용하게 되면 사소한 공백 하나 때문에 에러가 발생하는 상황을 막을 수 있다.
  • 명령어를 아무것도 작성하지 않아도 계속 반복될 수 있도록 cmd.length() == 0 일 때, 반복문에 계속 실행될 수 있도록 continue;를 실행한다.
  • 만약 명령어에 'system exit'라고 입력하면 break와 함께 무한 루프가 종료하게 된다.
  • 만약 명령어에 'article list'라고 입력하면 현재는 저장된 게시물이 없기 때문에 "게시물이 없습니다."라고 출력하게 된다.
  • 만약 명령어에 'article write'라고 입력하면 게시물의 고유 번호인 id라는 변수를 만들어 주고 차례대로 제목과 내용을 입력한다.
  • 무한 루프안에 생성된 id는 지역변수로서 반복문이 끝남과 동시에 효력을 상실한다. 그렇기 때문에 고유 번호를 lastArticleId로 전역변수로 따로 생성해주고 무한 루프 안의 조건문에서 게시물을 하나씩 작성할 때마다 int id = lastArticleId + 1;을 해주고 id 값을 lastArticleId에 갱신해준다.

 

  • 현재까지 작성된 코드를 실행하면 다음과 같이 게시판이 동작한다.

게시판 1차 동작

반응형

'프로젝트 > [Java] 게시판 제작' 카테고리의 다른 글

[Java] 게시판 제작(6)  (0) 2024.02.23
[Java] 게시판 제작(5)  (0) 2024.02.22
[Java] 게시판 제작(4)  (0) 2024.02.21
[Java] 게시판 제작(3)  (0) 2024.02.21
[Java] 게시판 제작(2)  (0) 2024.02.21