[ 게시판 만들기 - 2 (배열 복사) ]


 => 기존 게시판 예제 내용

 - 게시판 만들기 - 1 : http://momentoo.tistory.com/6



[ 게시판 소스 ]

 - 기존의 소스에 등록 시 문제점이었던 크기가 고정적인 부분을 배열 복사 로직으로 구현해 봤습니다.

 - 등록 이외에 소스들은 기존 소스와 같습니다.


1
2
3
4
5
6
7
8
9
10
11
if(boardArrCnt >= boardArr.length) { // 배열의 크기가 최대일     
    
    int arrPlus = 5// 배열의 크기를 늘려줄 임의의 값 설정
                    
    String[][] boardArrCop = new String[boardArr.length + arrPlus][]; // 기존 배열의 내용을 복사해 둘 새 배열 생성. [크기는 기존 배열 크기+임의의 값]
    for(int k = 0; k < boardArr.length; k++) {
        boardArrCop[k] = boardArr[k]; // 배열 내용 복사 로직
    }    
    boardArr = new String[boardArrCop.length][]; // 기존 배열 크기를 늘려 생성.
    boardArr = boardArrCop; // 복사해 둔 배열 값을 크기를 늘려준 배열에 복사
}
cs


'Development > JAVA' 카테고리의 다른 글

[JAVA] 게시판 예제 - 3 (ArrayList, 기능 분리)  (0) 2016.09.02
[JAVA] Collection,Map 정리  (0) 2016.09.02
[JAVA] 게시판 예제 - 1 (배열, Scanner)  (0) 2016.08.24
[JAVA] Scanner 문자열 입력  (0) 2016.08.24
[JAVA] 배열  (0) 2016.08.24

[ 게시판 만들기 - 1 (배열, Scanner) ]


 => 배열, Scanner 내용

 - 배열 : http://momentoo.tistory.com/4

 - Scanner : http://momentoo.tistory.com/5



[ 게시판 소스 ]

 - 배열과 Scanner만을 사용되어진 게시판입니다.

 - 게시물을 CRUD(Create, Read, Update, Delete)기능을 통해 사용해 볼 수 있습니다.

 - 게시물을 저장 수 있는 크기가 제한적인 소스입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
import java.util.Scanner;
 
public class BoardFirst {
    
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in); // 문자열 입력을 위한 Scanner 생성
        
        String[][] boardArr = new String[5][]; // 게시판 내용을 저장하기 위한 배열 (5개 게시물 내용만 저장할 수 있음.)
        
        int boardArrCnt = 0// 게시물 카운트
        int seq = 1// 게시물 번호
        
        while(true) {
            
            System.out.println("1. 등록 2. 전체조회 3. 선택조회 4. 수정 5. 삭제 0. 종료");
            String choice = sc.next(); // 모드 선택
            
            if(choice.equals("1")) {
                System.out.println("등록란입니다.");
                
                if(boardArrCnt >= boardArr.length) { // 배열 크기가 최대 일 때
                    System.out.println("더 이상 등록할 수 없습니다.");
                }else {
                    String[] boardArrVar = new String[4]; // 등록할 입력 값 배열 선언
                    boardArrVar[0= String.valueOf(seq); // 등록할 게시물 번호 추가
                    
                    System.out.println(boardArrVar[0+ "번의 등록할 제목을 입력하세요.");
                    boardArrVar[1= sc.next(); // 등록할 제목 입력
                    
                    System.out.println(boardArrVar[0+ "번의 등록할 내용을 입력하세요.");
                    boardArrVar[2= sc.next(); // 등록할 내용 입력
                    
                    System.out.println(boardArrVar[0+ "번의 등록할 추가정보를 입력하세요.");
                    boardArrVar[3= sc.next(); // 등록할 추가정보 입력
                    
                    boardArr[boardArrCnt] = boardArrVar; // 등록 값 배열에 저장
                    
                    System.out.println("등록완료되었습니다.");
                    
                    seq++;
                    boardArrCnt++;
                }
            }else if(choice.equals("2")) {
                System.out.println("전체조회입니다.");
                if (boardArrCnt == 0) { // 등록된 값이 없을 때
                    System.out.println("등록된 값이 없습니다.");
                }else {
                    for(int i=0; i < boardArrCnt; i++) {
                        System.out.println(boardArr[i][0+ "번에 등록된 내용은 다음과 같습니다.");
                        System.out.println("이름 = > [" + boardArr[i][1+ "] 내용 = > [" + boardArr[i][2+ "] 추가정보 = > [" + boardArr[i][3+ "]"); 
                    }
                    System.out.println("조회가 끝났습니다.");
                }
            }else if(choice.equals("3")) {
                System.out.println("선택조회입니다.");
                if (boardArrCnt == 0) { // 등록된 값이 없을 때
                    System.out.println("등록된 값이 없습니다.");
                }else {
                    System.out.println("선택조회할 번호를 입력하세요.");
                    String searchVal = sc.next(); // 조회할 번호 입력
                    boolean searchBoo = false// 조회 여부
                    for(int i=0; i < boardArrCnt; i++) {
                        if(boardArr[i][0].equals(searchVal)) { // 배열에 저장되어 있는 게시물 번호와 조회 값이 같을 때
                            System.out.println(boardArr[i][0+ "번의 값은 다음과 같습니다.");
                            System.out.println("이름 = > [" + boardArr[i][1+ "] 내용 = > [" + boardArr[i][2+ "] 추가정보 = > [" + boardArr[i][3+ "]");
                            searchBoo = true// 조회 성공
                            break;
                        }
                    }
                    if(searchBoo==false) { // 조회 실패일 때
                        System.out.println("선택한 값은 없습니다.");
                    }
                }
            }else if(choice.equals("4")) {
                System.out.println("수정란입니다.");
                if (boardArrCnt == 0) { // 등록된 값이 없을 때
                    System.out.println("등록된 값이 없습니다.");
                }else {
                    System.out.println("선택조회할 번호를 입력하세요.");
                    String searchVal = sc.next(); // 조회할 번호 입력
                    boolean searchBoo = false// 조회 여부
                    for(int i=0; i < boardArrCnt; i++) {
                        if(boardArr[i][0].equals(searchVal)) { // 배열에 저장되어 있는 게시물 번호와 조회 값이 같을 때
                            System.out.println(boardArr[i][0+ "번의 값은 다음과 같습니다.");
                            System.out.println("이름 = > [" + boardArr[i][1+ "] 내용 = > [" + boardArr[i][2+ "] 추가정보 = > [" + boardArr[i][3+ "]");
                            
                            System.out.println("수정이 시작됩니다.");
                            String[] boardArrVar = new String[4];
                            
                            boardArrVar[0= boardArr[i][0];
                            
                            System.out.println(boardArrVar[0+ "번의 수정할 제목을 입력하세요.");
                            boardArrVar[1= sc.next();
                            
                            System.out.println(boardArrVar[0+ "번의 수정할 내용을 입력하세요.");
                            boardArrVar[2= sc.next();
                            
                            System.out.println(boardArrVar[0+ "번의 수정할 추가정보를 입력하세요.");
                            boardArrVar[3= sc.next();
                            
                            boardArr[i] = boardArrVar; // 수정 값 배열에 저장
                            
                            System.out.println("수정이 완료되었습니다.");
                            
                            searchBoo = true// 수정 성공
                            break;
                        }
                    }
                    if(searchBoo==false) { // 조회 실패일 때
                        System.out.println("선택한 값은 없습니다.");
                    }
                }
            }else if(choice.equals("5")) {
                System.out.println("삭제란입니다.");
                if (boardArrCnt == 0) { // 등록된 값이 없을 때
                    System.out.println("등록된 값이 없습니다.");
                }else {
                    System.out.println("선택조회할 번호를 입력하세요.");
                    String searchVal = sc.next(); // 조회할 번호 입력
                    boolean searchBoo = false// 조회 여부
                    for(int i=0; i < boardArrCnt; i++) {
                        if(boardArr[i][0].equals(searchVal)) { // 배열에 저장되어 있는 게시물 번호와 조회 값이 같을 때
                            System.out.println(boardArr[i][0+ "번의 값은 다음과 같습니다.");
                            System.out.println("이름 = > [" + boardArr[i][1+ "] 내용 = > [" + boardArr[i][2+ "] 추가정보 = > [" + boardArr[i][3+ "]");
                            
                            System.out.println("해당 값을 삭제하시겠습니까? Y[예] // N[아니오]");
                            String deleteChoice = sc.next(); // 삭제 여부 입력
                            
                            if(deleteChoice.equals("Y")) { // 삭제 선택일 때
 
                                boardArr[i] = null// 해당 선택값 null
                                boardArrCnt--// 배열에 추가하기 위해 인덱스 번호 감소
                                
                                for(int j=i; j < boardArrCnt; j++) { // 배열에서 삭제 선택 값 부터 저장되어진 최대값까지 반복
                                    if(boardArrCnt == 0) { // 삭제 후 저장되어진 값이 없을 때
                                        break;
                                    }
                                    boardArr[j] = boardArr[j+1]; // 삭제 후 로직 실행
                                    boardArr[j+1= null;
                                }
                                System.out.println("삭제완료되었습니다.");
                            }else { // 삭제 취소일 때
                                System.out.println("삭제가 취소되었습니다.");
                            }
                            searchBoo = true// 조회 성공
                            break;
                        }
                    }
                    if(searchBoo==false) { // 조회 실패일 때
                        System.out.println("선택한 값은 없습니다.");
                    }
                }
            }else if(choice.equals("0")) {
                System.out.println("종료되었습니다.");
                break;
            }else { // 모드 선택값이 없을 때
                System.out.println("잘못선택하셨습니다.");
                continue;
            }
        }
    }
}
 
cs



[ 게시판 소스 결과 - 등록 ]

 - 게시물이 등록되는 것을 보여줍니다.

1. 등록 2. 전체조회 3. 선택조회 4. 수정 5. 삭제 0. 종료
1
등록란입니다.
1번의 등록할 제목을 입력하세요.
TitleFirst
1번의 등록할 내용을 입력하세요.
Content
1번의 등록할 추가정보를 입력하세요.
PlusValue
1. 등록 2. 전체조회 3. 선택조회 4. 수정 5. 삭제 0. 종료
1
등록란입니다.
등록완료되었습니다.
2번의 등록할 제목을 입력하세요.
Second
2번의 등록할 내용을 입력하세요.
Cc
2번의 등록할 추가정보를 입력하세요.
없음.
등록완료되었습니다.
cs


 - 게시물이 최대치가 되었을 때 내용입니다.

1. 등록 2. 전체조회 3. 선택조회 4. 수정 5. 삭제 0. 종료
1
등록란입니다.
더 이상 등록할 수 없습니다.
cs


[ 게시판 소스 결과 - 전체조회 ]

 - 게시물들이 저장된 내용들을 보여줍니다.

1. 등록 2. 전체조회 3. 선택조회 4. 수정 5. 삭제 0. 종료
2
전체조회입니다.
1번에 등록된 내용은 다음과 같습니다.
이름 = > [TitleFirst] 내용 = > [Content] 추가정보 = > [PlusValue]
2번에 등록된 내용은 다음과 같습니다.
이름 = > [Second] 내용 = > [Cc] 추가정보 = > [없음.]
3번에 등록된 내용은 다음과 같습니다.
이름 = > [Main] 내용 = > [내용] 추가정보 = > [추가할]
4번에 등록된 내용은 다음과 같습니다.
이름 = > [4번제목] 내용 = > [내용은] 추가정보 = > [없음.]
5번에 등록된 내용은 다음과 같습니다.
이름 = > [5번제목] 내용 = > [내용입니다.] 추가정보 = > [010-2222-XXXX]
조회가 끝났습니다.
cs


[ 게시판 소스 결과 - 선택조회 ]

 - 선택하여 조회한 내용을 보여줍니다.

1. 등록 2. 전체조회 3. 선택조회 4. 수정 5. 삭제 0. 종료
3
선택조회입니다.
선택조회할 번호를 입력하세요.
1
1번의 값은 다음과 같습니다.
이름 = > [TitleFirst] 내용 = > [Content] 추가정보 = > [PlusValue]
cs


[ 게시판 소스 결과 - 수정 ]

 - 선택하여 수정한 내용을 보여줍니다.

1. 등록 2. 전체조회 3. 선택조회 4. 수정 5. 삭제 0. 종료
4
수정란입니다.
선택조회할 번호를 입력하세요.
1
1번의 값은 다음과 같습니다.
이름 = > [TitleFirst] 내용 = > [Content] 추가정보 = > [PlusValue]
수정이 시작됩니다.
1번의 수정할 제목을 입력하세요.
First수정
1번의 수정할 내용을 입력하세요.
내용없음
1번의 수정할 추가정보를 입력하세요.
추가정보없음
수정이 완료되었습니다.
cs


 - 수정 된 내용입니다.

1번의 값은 다음과 같습니다.
이름 = > [First수정] 내용 = > [내용없음] 추가정보 = > [추가정보없음]
cs


[ 게시판 소스 결과 - 삭제 ]

 - 선택하여 삭제한 내용을 보여줍니다. (편의를 위해 첫번째와 마지막 값만을 삭제하였습니다.)

1. 등록 2. 전체조회 3. 선택조회 4. 수정 5. 삭제 0. 종료
5
삭제란입니다.
선택조회할 번호를 입력하세요.
1
1번의 값은 다음과 같습니다.
이름 = > [First수정] 내용 = > [내용없음] 추가정보 = > [추가정보없음]
해당 값을 삭제하시겠습니까? Y[예] // N[아니오]
Y
삭제완료되었습니다.
cs


1. 등록 2. 전체조회 3. 선택조회 4. 수정 5. 삭제 0. 종료
5
삭제란입니다.
선택조회할 번호를 입력하세요.
5
5번의 값은 다음과 같습니다.
이름 = > [5번제목] 내용 = > [내용입니다.] 추가정보 = > [010-2222-XXXX]
해당 값을 삭제하시겠습니까? Y[예] // N[아니오]
Y
삭제완료되었습니다.
cs


 - 삭제 후 내용을 보여줍니다.

전체조회입니다.
2번에 등록된 내용은 다음과 같습니다.
이름 = > [Second] 내용 = > [Cc] 추가정보 = > [없음.]
3번에 등록된 내용은 다음과 같습니다.
이름 = > [Main] 내용 = > [내용] 추가정보 = > [추가할]
4번에 등록된 내용은 다음과 같습니다.
이름 = > [4번제목] 내용 = > [내용은] 추가정보 = > [없음.]
조회가 끝났습니다.
cs


 - 삭제 후 정상적으로 등록되어지는 내용입니다.

등록란입니다.
6번의 등록할 제목을 입력하세요.
삭제후추가
6번의 등록할 내용을 입력하세요.
내용없음
6번의 등록할 추가정보를 입력하세요.
010-5555-XXXX
등록완료되었습니다.
 
전체조회입니다.
2번에 등록된 내용은 다음과 같습니다.
이름 = > [Second] 내용 = > [Cc] 추가정보 = > [없음.]
3번에 등록된 내용은 다음과 같습니다.
이름 = > [Main] 내용 = > [내용] 추가정보 = > [추가할]
4번에 등록된 내용은 다음과 같습니다.
이름 = > [4번제목] 내용 = > [내용은] 추가정보 = > [없음.]
6번에 등록된 내용은 다음과 같습니다.
이름 = > [삭제후추가] 내용 = > [내용없음] 추가정보 = > [010-5555-XXXX]
조회가 끝났습니다.
cs


[ 게시판 소스 결과 - 예외 화면 ]

 - 등록된 값이 없을 때와 선택 시 존재하지 않을 때의 결과 화면입니다.

전체조회입니다.
등록된 값이 없습니다.
 
선택조회입니다.
선택조회할 번호를 입력하세요.
10
선택한 값은 없습니다.
cs


'Development > JAVA' 카테고리의 다른 글

[JAVA] Collection,Map 정리  (0) 2016.09.02
[JAVA] 게시판 예제 - 2 (배열 복사)  (0) 2016.08.29
[JAVA] Scanner 문자열 입력  (0) 2016.08.24
[JAVA] 배열  (0) 2016.08.24
[JAVA] 데이터 타입  (0) 2016.08.18

[ Scanner 문자열 입력에 대해 알아보기 ]


Q. Scanner란?

 - 입력받은 문자열을 읽고 처리하기 위해서 사용되어지는 클래스입니다.

 - 이 클래스는 다양한 타입의 입력 값들을 읽어들일 수 있어 편하게 사용할 수 있습니다.

 - Scanner클래스를 사용하기 위해서는 java,util.Scanner를 import해주어야 합니다.


Q. 문자열 출력, 입력 방법?

 - 문자열을 출력하는 방법으로는 System.out.print(); 을 사용합니다.

 - 문자열을 입력받는 방법으로는 Scanner 클래스 생성 시에 System.in을 사용합니다.


[ Scanner 문자열 예제 ]

 - 여러번의 입력을 받아 그 값을 Console에 출력하는 예제입니다.

 - while문을 true로 설정하여 계속 입력을 받도록 선언하였습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.util.Scanner;
 
public class ScannerEample {
    
    public static void main(String[] args) {
        
        // 문자열 입력을 위해 Scanner 생성
        Scanner sc = new Scanner(System.in);
        
        // 입력 값 저장을 위해 String 2차원 배열 선언
        String[][] stringArr = new String[10][];
        // 입력받은 값을 담을 String 배열 선언
        String[] scannerArr = new String[3];
        
        // 배열 카운트 선언
        int scCnt = 1;
        
        while(true) { // 계속 입력을 받기 위해 true로 설정
            
            System.out.println("첫번째 값을 입력하세요 = >");
            scannerArr[0= sc.next(); // 첫번째 입력
            
            System.out.println("두번째 값을 입력하세요 = >");
            scannerArr[1= sc.next(); // 두번째 입력
            
            System.out.println("세번째 값을 입력하세요 = >");
            scannerArr[2= sc.next(); // 세번째 입력
            
            stringArr[scCnt] = scannerArr; // 입력 받은 배열 값을 2차원 배열에 저장
            
            for(int i = 0; i < stringArr.length; i++) { // 입력된 값의 순서와 내용을 출력
                System.out.println(scCnt + "순서로 입력된 값의 " + i + "번째 내용 = > " +  stringArr[scCnt][i].toString());
            }
            scCnt++;
        }
    }
}
cs


[ 예제 결과 ]

 - 띄워쓰기는 불가합니다.

 - 반복문을 종료하기 위해서는 break문을 추가해 주시길 바랍니다.


 - 참고 문헌 : Head First JAVA

 - 참고 사이트 : http://hyeonstorage.tistory.com/136


'Development > JAVA' 카테고리의 다른 글

[JAVA] 게시판 예제 - 2 (배열 복사)  (0) 2016.08.29
[JAVA] 게시판 예제 - 1 (배열, Scanner)  (0) 2016.08.24
[JAVA] 배열  (0) 2016.08.24
[JAVA] 데이터 타입  (0) 2016.08.18
[JAVA] Call by Reference, Call by Value  (0) 2016.08.18

+ Recent posts