티스토리 뷰

Develop/Java

Java Console 게시판 만들기

새내기 whitelife 2013.11.10 01:55


최근 들어 자바란 아이에게 신경을 별로 쓰지 못 했다. ㅎㅎ

생각 없이 코딩을 하던 중 String 비교를 하는데 비교가 되지 않아서 equals 함수를 써서 해결을 했다. 무심했던 것 일까...


test.java

public class test {
  public static void main(String[] args) {

    String a = "test";
    String b = "test";
    String c = new String("test");
    String d = new String("test");

    System.out.println("a: " + System.identityHashCode(a));
    System.out.println("b: " + System.identityHashCode(b));
    System.out.println("c: " + System.identityHashCode(c));
    System.out.println("d: " + System.identityHashCode(d));

    System.out.println("a == b: " + (a == b));
    System.out.println("a equals b: " + a.equals(b));
    System.out.println("c == d: " + (c == d));
    System.out.println("c equals d: " + c.equals(d));
  }
}

실행 결과

a: 1579880541
b: 1579880541
c: 1564441079
d: 1918924532
a == b: true
a equals b: true
c == d: false
c equals d: true

c == d 부분을 보면 hash 값이 다른 것을 볼 수 있다. 당연히 주소 값을 비교 하기 때문이다. 뻘짓을 하다니 완전 좌절 했다. ㅋ


게시판을 만들어 보자 


기능 정의

게시글의 최대 수는 9개로 제한 한다. 아래는 세부 기능 이다.


1.  등록

2.  상세 보기

3.  수정

4.  삭제

5.  리스트 보기

6.  종료


Sample

게시 글 항목은 번호, 제목, 내용 간단하게 3가지로 간다.


no: 1

title: title

content: content

 

Code

bbs.java

import java.util.Scanner;

public class bbs {
  
  public static void main(String[] args) {
   
  	Scanner s = new Scanner(System.in);

	String[][] bbses = new String[9][];
	int seq = 1;
	int gindex = 0;

	while(true) {
			
		System.out.println("1. create, 2. read, 3. update, 4. delete, 5. list, x. exit");

		String choice = s.next();

		if (choice.equals("1")) {
				
			if (gindex == bbses.length) {
				System.out.println("게시글이 꽉 찼습니다.\n삭제 후 이용해 주세요.");
				continue;
			}

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

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

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

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

			System.out.println("Complete...");
		} else if (choice.equals("2")) {
				
			System.out.println("input no...");
			String no = s.next();					
				
			boolean flag = false;		

			for (String[] bbs : bbses) {
				if (bbs != null && bbs[0].equals(no)) {
					System.out.println("no: " + bbs[0]);
					System.out.println("title: " + bbs[1]);
					System.out.println("content: " + bbs[2]);
					flag = true;
					break;
				}
			}

			if (!flag) {
				System.out.println("게시글이 없습니다.");
			}
		} else if (choice.equals("3")) {
				
			System.out.println("input no...");
			String no = s.next();					
				
			boolean flag = false;		

			for (String[] bbs : bbses) {
				if (bbs != null && bbs[0].equals(no)) {
					System.out.println("input title...");
					String title = s.next();

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

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

					flag = true;
					break;
				}
			}
				
			if (flag) {
				System.out.println("Complete...");
			} else {
				System.out.println("게시글이 없습니다.");
			}
		} else if (choice.equals("4")) {

			System.out.println("input no...");
			String no = s.next();					
				
			int index = -1;			
			boolean flag = false;		
				
			if (gindex == 0) {
				System.out.println("입력된 게시글이 없습니다.");
				continue;
			}

			for (int i=0; i<bbses.length; i++) {
				String[] bbs = bbses[i];

				if (bbs != null && bbs[0].equals(no)) {
					bbses[i] = null;
					index = i;
					gindex--;
					flag = true;
					break;
				}
			}
				
			if (flag) {
					
				int length = bbses.length;				

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

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

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

				System.out.println("Complete...");
			} else {
				System.out.println("게시글이 없습니다.");
			}

		} else if (choice.equals("5")) {
			for (int i=0; i<bbses.length; i++) {
				if (bbses[i] == null) continue;				

				System.out.println("index: " + i);
				System.out.println("no: " + bbses[i][0]);
				System.out.println("title: " + bbses[i][1]);
				System.out.println("content: " + bbses[i][2]);
			}			
		} else if (choice.equals("x")) {
			System.out.println("프로그램을 종료 합니다.");
			break;
		} else {
			System.out.println("잘못 입력 하셨습니다.\n다시 입력해 주십시오.");
		}
	}	
  }
}

실행 결과


1. create, 2. read, 3. update, 4. delete, 5. list, x. exit

1

input title...

111

input content...

222

Complete...

1. create, 2. read, 3. update, 4. delete, 5. list, x. exit

1

input title...

333

input content...

444

Complete...

1. create, 2. read, 3. update, 4. delete, 5. list, x. exit

1

input title...

555

input content...

666

Complete...

1. create, 2. read, 3. update, 4. delete, 5. list, x. exit

5

index: 0

no: 1

title: 111

content: 222

index: 1

no: 2

title: 333

content: 444

index: 2

no: 3

title: 555

content: 666

1. create, 2. read, 3. update, 4. delete, 5. list, x. exit

x

프로그램을 종료 합니다.


심플한 게시판이 실행 되는 것을 확인 할 수 있다.


긴 글을 읽어 주셔서 감사합니다. 


신고
댓글
  • 프로필사진 자바 많은 도움 되었습니다.
    질문 하나 드리고 싶은데
    Update 에서 수정 시 띄어쓰기를 이용하고 싶은데 공백이나 개행문자가 입력되어 프로그램 활용에 지장이 있는데
    C++ 에서 cin.ignore() 과 같은 기능을 하는 게 자바에도 있나요?
    2016.08.09 13:22 신고
댓글쓰기 폼