package com.KoreaIT.java.BasicAM;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; //Ctrl+Shift+O 를 해주면 간편하게 추가됨
public class Main {
public static void main(String[] args) {
System.out.println("==프로그램 시작==");
Scanner sc = new Scanner(System.in);
int lastArticleId = 0;
// 마지막articleid의 초기값을 0으로 설정해주는 변수이다.
List<Article> articles = new ArrayList<>();
// Article리스트를 담을 객체를 생성
while (true) {
System.out.printf("명령어 ) ");
String command = sc.nextLine().trim();
// trim은 앞 뒤 공백을 무시할 수 있도록 해준다.
if (command.length() == 0) {
System.out.println("명령어를 입력해주세요");
continue;
}
if (command.equals("system exit")) {
break;
}
if (command.equals("article list")) {
if (articles.size() == 0) {
System.out.println("게시글이 없습니다");
continue;
}
System.out.println("번호 / 제목 ");
String tempTitle = null;
for (int i = articles.size() - 1; i >= 0; i--) {
Article article = articles.get(i);
if (article.title.length() > 4) {
tempTitle = article.title.substring(0, 4);
System.out.printf("%d / %s\n", article.id, tempTitle + "...");
continue;
}
//articles.size()-1을 해주는 이유는 배열에서 위치를 나타낼 때 0부터이기 때문이다.
//Article 객체를 사용하기 위해 get을 사용해 가져와준다.
//여기서 사용된 조건문은 제목이 길 때 길이를 제한하기 위해서 사용한다.
System.out.printf("%d / %s\n", article.id, article.title);
}
} else if (command.equals("article write")) {
int id = lastArticleId + 1;
System.out.printf("제목 : ");
String title = sc.nextLine();
System.out.printf("내용 : ");
String body = sc.nextLine();
Article article = new Article(id, title, body);
articles.add(article);
//while반복문 전에 lastArticleId라는 변수에 0을 대입했었다.
//add를 사용해 Article 객체에 id, title, body라는 변수의 값을 넣어 저장해준다.
System.out.printf("%d번 글이 생성 되었습니다\n", id);
lastArticleId++;
}
else {
System.out.println("존재하지 않는 명령어입니다");
}
}
System.out.println("==프로그램 끝==");
sc.close();
}
}
class Article {
int id;
String title;
String body;
// Article 객체를 사용하기 위해 Article 클래스를 생성
// id, title, body라는 변수를 생성
Article(int id, String title, String body) {
this.id = id;
this.title = title;
this.body = body;
}
// 매개변수를 사용해 Article에 3개의 변수가 들어가게 해준다.
// this를 사용해 위에 있는 변수를 사용
}