텍스트게시판 (2)
요구사항 5번 게시물삭제까지 개선버전
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
static List<Article> articles = new ArrayList<>();
public static void main(String[] args) {
int LastArticleNum = 0;
while (true) {
Scanner sc = new Scanner(System.in);
System.out.printf("명령어를 입력해주세요. : ");
String command = sc.nextLine();
if (command.equals("exit")) {
System.out.println("프로그램을 종료합니다.");
break;
} else if (command.equals("add")) {
LastArticleNum++;
System.out.printf("게시물 제목을 입력해주세요. : ");
String title = sc.nextLine();
System.out.printf("게시물 내용을 입력해주세요. : ");
String content = sc.nextLine();
System.out.println("==================");
System.out.println("게시물이 등록되었습니다.");
System.out.println("==================");
Article article = new Article(title, content, LastArticleNum);
articles.add(article);
} else if (command.equals("update")) {
while (true) {
System.out.printf("수정할 게시물 번호 또는 \"back\" : ");
String editNum = sc.nextLine();
if (editNum.equals("back")) {
System.out.println("==================");
System.out.println("목록으로 돌아갑니다.");
System.out.println("==================");
break;
}
try {
int number = Integer.parseInt(editNum);
boolean isNumExist = false;
for (int i = 0; i < articles.size(); i++) {
if (number == articles.get(i).getId()) {
System.out.printf("수정할 제목 : ");
String title = sc.nextLine();
System.out.printf("수정할 내용 : ");
String content = sc.nextLine();
Article article = new Article(title, content, LastArticleNum);
articles.set(i, article);
System.out.println("==================");
System.out.println("게시물이 수정되었습니다.");
System.out.println("==================");
isNumExist = true;
}
}
if (isNumExist == false) {
System.out.println("==================");
System.out.println("없는 게시물 번호입니다.");
System.out.println("==================");
} else {
break;
}
} catch (NumberFormatException e) {
System.out.println("==================");
System.out.println("숫자를 입력해주세요.");
System.out.println("==================");
}
}
} else if (command.equals("delete")) {
while (true) {
System.out.printf("삭제할 게시물 번호 또는 \"back\" : ");
String editNum = sc.nextLine();
if (editNum.equals("back")) {
System.out.println("==================");
System.out.println("목록으로 돌아갑니다.");
System.out.println("==================");
break;
}
try {
int number = Integer.parseInt(editNum);
boolean isNumExist = false;
for (int i = 0; i < articles.size(); i++) {
if (number == articles.get(i).getId()) {
articles.remove(i);
System.out.println("==================");
System.out.println("게시물이 삭제되었습니다.");
System.out.println("==================");
isNumExist = true;
}
}
if (isNumExist == false) {
System.out.println("==================");
System.out.println("없는 게시물 번호입니다.");
System.out.println("==================");
} else {
break;
}
} catch (NumberFormatException e) {
System.out.println("==================");
System.out.println("숫자를 입력해주세요.");
System.out.println("==================");
}
}
} else if (command.equals("list")) {
for (int i = 0; i < articles.size(); i++) {
System.out.println("==================");
System.out.println("번호 : " + articles.get(i).getId());
System.out.println("제목 : " + articles.get(i).getTitle());
System.out.println("내용 : " + articles.get(i).getContent());
System.out.println("==================");
}
}
}
}
}
또한 기존의 코드는 "없는 게시물 번호입니다"를 출력한 후에 가장 처음 명령어창으로 돌아갔는데 각 기능마다 while(true)로 씌운다음 "back"을 입력하거나 옳은 게시물을 선택했을때 break;를 넣음으로 이제 "없는 게시물 번호입니다" 혹은 "숫자를 입력해주세요" 문구를 출력한후 명령어창이아닌 기능에서 번호 선택창으로 돌아가게된다.