[Java Console 게시판 만들기 - 2] - http://blog.whitelife.co.kr/163


윗 글의 게시판 소스 개선 입니다.


-  Object 형태로 변경

-  게시판 Array가 꽉 찼을 경우 동적 Array 생성


이제는 게시글을 제한 없이 입력이 가능 합니다.


Bbs.java

import java.util.Scanner;

public class Bbs {
  
	private Scanner s;
	
	private String[][] bbses;
	private int seq;
	private int gindex;
	
	public Bbs() {
		this.s = new Scanner(System.in);

		this.bbses = new String[9][];
		this.seq = 1;
		this.gindex = 0;
	}

	public void addArray() {
		String[][] temp = this.bbses;
		
		this.bbses = new String[(int)temp.length + 10][];
		System.arraycopy(temp, 0, this.bbses, 0, temp.length);
	}

	public void readme() {
		System.out.println("1. 등록, 2. 상세보기, 3. 수정, 4. 삭제, 5. 목록, x. 종료");
	}

	public void exit() {
		System.out.println("프로그램을 종료 합니다.");
	}

	public String getInput() {
		return this.s.next();
	}

	public void create() {
		if (gindex == bbses.length) {
			this.addArray();
		}

		String no = String.valueOf(seq);
		
		System.out.println("input title...");
		String title = getInput();

		System.out.println("input content...");
		String content = getInput();

		String[] bbs = new String[3];
		bbs[0] = no;
		bbs[1] = title;
		bbs[2] = content;

		this.bbses[this.gindex++] = bbs;
		this.seq++;

		System.out.println("등록이 완료 되었습니다.");
	}
	
	private String[] getSearch(String no) {
		for (String[] bbs : this.bbses) {
			if (bbs != null && bbs[0].equals(no)) {
				return bbs;			
			}
		}

		return null;
	}

	private int getIndex(String no) {
		for (int i=0; i<this.bbses.length; i++) {
			String[] bbs = this.bbses[i];
			
			if (bbs != null && bbs[0].equals(no)) {
				return i;
			}
		}
		
		return -1;
	}

	public void read(String no) {
		if (no == null || no == "") {
			System.out.println("잘못 입력 하셨습니다.");
			return;
		}
	
		String[] bbs = getSearch(no);
		
		if (bbs == null) {
			System.out.println("게시글이 없습니다.");
			return;
		}
		
		System.out.println("no: " + bbs[0]);
		System.out.println("title: " + bbs[1]);
		System.out.println("content: " + bbs[2]);
	}

	public void update(String no) {
		if (no == null || no == "") {
			System.out.println("잘못 입력 하셨습니다.");
			return;
		}
	
		String[] bbs = this.getSearch(no);
		
		if (bbs == null) {
			System.out.println("게시글이 없습니다.");
			return;
		}

		System.out.println("input title...");
		String title = this.getInput();

		System.out.println("input content...");
		String content = this.getInput();

		bbs[1] = title;
		bbs[2] = content;

		System.out.println("수정이 완료 되었습니다.");
	}
	
	public void delete(String no) {
		if (no == null || no == "") {
			System.out.println("잘못 입력 하셨습니다.");
			return;
		}

		int index = this.getIndex(no);

		if (index == -1) {
			System.out.println("게시글이 없습니다.");
			return;
		}

		this.bbses[index] = null;
		this.gindex--;

		int length = this.bbses.length;				

		for (int i=0; i<length; i++) {
			
			if (index == 0) {
				break;
			}

			if (index == length-1) {
				break;
			}					

			if (i > index) {
				if (i < length) {
					this.bbses[i-1] = this.bbses[i];
					this.bbses[i] = null;
				}
			}
		}

		System.out.println("삭제가 완료 되었습니다.");
	}

	public void getList() {
		for (int i=0; i<this.bbses.length; i++) {
			if (this.bbses[i] == null) continue;				

			System.out.println("index: " + i);
			System.out.println("no: " + this.bbses[i][0]);
			System.out.println("title: " + this.bbses[i][1]);
			System.out.println("content: " + this.bbses[i][2]);
		}			
	}

    public static void main(String[] args) {

		Bbs bbs = new Bbs(); 

		while(true) {
			bbs.readme();		

			String choice = bbs.getInput();

			if (choice.equals("1")) {
				bbs.create();
			} else if (choice.equals("2")) {
				System.out.println("번호를 입력해 주십시오.");
				bbs.read(bbs.getInput());
			} else if (choice.equals("3")) {
				System.out.println("번호를 입력해 주십시오.");
				bbs.update(bbs.getInput());
			} else if (choice.equals("4")) {
				System.out.println("번호를 입력해 주십시오.");
				bbs.delete(bbs.getInput());
			} else if (choice.equals("5")) {
				bbs.getList();
			} else if (choice.equals("x")) {
				bbs.exit();
				break;
			} else {
				System.out.println("잘못 입력 하셨습니다.\n다시 입력해 주십시오.");
			}
        }	
    }
}


+ Recent posts