반응형
츄르사려고 코딩하는 코집사입니다.
1. bochung01.java 클래스
/*
* 데이터 저장 관리는 배열 이용
*
* 전체 게시물 조회
* 글번호 조회
* 글등록
* 글수정
* 글삭제
* 종료
*/
package bochung.step02.board;
import java.util.*;
public class bochung01 {
public static void main(String[] args) {
//게시글을 저장할 배열 선언
Board[] boards = new Board[2];
// 배열의 크기 표시와 입력될 위치
int pos = 0;// 글등록, 글삭제시 변경
int no = 0; // 글번호 사용 변수
Scanner sc = new Scanner(System.in);
System.out.println("게시판 관리 프로그램 - v1");
while(true) {
System.out.println("--------------------------");
System.out.println("1. 전체 게시물 조회");
System.out.println("2. 글번호 조회");
System.out.println("3. 글등록");
System.out.println("4. 글수정");
System.out.println("5. 글삭제");
System.out.println("0. 종료");
System.out.println("--------------------------");
System.out.print("선택 : ");
/*
* 아래의 코드는 줄바꿈이 생겨서 해결하기 위해 sc.nextLine()을 통해 줄바꿈 제거
* 계속 번거롭기 때문에 Integer.parseInt(sc.nextLine()) 한 줄로 사용
int menu = sc.nextInt();
sc.nextLine();
*/
//문자열 값을 받아서 숫자형으로 바꿔줌
int menu = Integer.parseInt(sc.nextLine());
System.out.println("선택한 메뉴 : " + menu);
switch(menu) {
case 1:
System.out.println("전체 게시물 수 : " + pos);
for(int i = pos-1; i>=0;i--) {
System.out.println(boards[i]);
/*
* 아래의 코드를 위의 코드처럼 1줄로 줄일 수 있다.
Board b = boards[i];
System.out.println(b);
*/
/* 1번과 2번 코드는 같다.
1. System.out.println(b);
2. System.out.println(b.toString());
아래 코드를 주석으로 막고 위의 코드를 실행하면 주소만 나옴.
System.out.print(b.getNo() + "\t");
System.out.print(b.getTitle() + "\t");
System.out.println(b.getWriter() + "\t");
*/
//자동으로 toString이 붙기 때문에 그냥 사용 가능
}
break;
case 2:
break;
case 3:
/*
* 1. 배열생성하기(기존크기 * 2)
* 2. 기존 배열의 내용을 복사한다.
* 3. 새롭게 생성되는 temp 배열의 주소값을 기존 배열 boards에 대입한다.
*/
if(pos==boards.length) {
/*
// 1. 배열생성하기(기존크기 * 2)
Board[] temp = new Board[pos*2];
// 2. 기존 배열의 내용을 새롭게 생성된 배열에 복사
for(int i=0;i<pos;i++) {
temp[i] = boards[i];
}
// 3. 새롭게 생성된 배열의 주소를 기존 배열에 넘긴다.
boards = temp;
*/
//위의 1,2,3번을 간단하게 짜는 방법
//새롭게 생성된 배열을 반환 copyOf(복사할배열, 새롭게 생성할 크기)
boards = Arrays.copyOf(boards, pos * 2);
System.out.println("더이상 입력이 불가능합니다.");
break;
}
System.out.println("글등록 호출됨.");
System.out.print("작성자 : ");
String writer = sc.nextLine();
System.out.print("제목 : ");
String title = sc.nextLine();
System.out.print("내용 : ");
String content = sc.nextLine();
System.out.println("입력 끝");
// writer, title, content의 변수의 값을 case 3번을 빠져나가기 전에 저장.
Board b = new Board();
b.setWriter(writer);
b.setTitle(title);
b.setContent(content);
b.setNo(++no);
boards[pos++] = b; // 여기서 저장
break;
case 4:
break;
case 5:
break;
case 0:
System.out.println("프로그램을 종료합니다.");
System.exit(0); //심플하게 끝내는 방법
}
}
}
}
2. Board.java 클래스
package bochung.step02.board;
/**
* 게시물 정보를 표현하는 클래스
* - 글쓴이
* - 제목
* - 내용
* - 번호
* @author yong
*/
public class Board {
public String toString() {
return no + "\t" + title + "\t" + writer;
}
private int no;
private String writer;
private String title;
private String content;
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
반응형
'Language > Java' 카테고리의 다른 글
자바(Java)로 코딩테스트 할 때 활용할 API (0) | 2021.01.26 |
---|---|
자바(Java) 상속과 다형성, 오버로드, 오버라이드 (0) | 2021.01.26 |
자바(Java) 재고 관리 프로그램 소스 (0) | 2021.01.22 |
자바(Java) 도서 관리 프로그램 최종 (0) | 2021.01.22 |
자바(Java) 도서 관리 프로그램 - (1) (0) | 2021.01.21 |
자바(Java) 중복없는 로또 번호 프로그램 만들기 (0) | 2021.01.20 |
[SW expert Academy] SWEA 5215번 햄버거 다이어트 자바(Java) (0) | 2021.01.14 |
자바(Java) Open Associated Perspective? (1) | 2021.01.13 |
최근댓글