수월하게 볼 줄 알았는데 연습하지 않았던 상세보기와 명령어가 다르고, 또 날짜까지 넣어야되서 조금 걸렸는데 그래도 걱정했던 것 보다는 수월하게 풀렸다. 반복 연습이 도움이 됐던 것 같다. 이하는 내가 제출한 코드다.
public class Main {
public static void main(String[] args) {
new App().run();
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import static org.koreait.MotivationController.*;
public class App {
static Scanner sc;
static int lastId;
static List<Motivation> motivations;
public App() {
sc = new Scanner(System.in);
lastId = 1;
motivations = new ArrayList<>();
}
public static void run() {
System.out.println("== 명언 앱 실행 ==");
while (true) {
System.out.print("명령어 ) ");
String cmd = sc.nextLine().trim();
if (cmd.equals("종료")) {
System.out.println("== 명언 앱 종료 ==");
return;
} else if (cmd.isEmpty()) System.out.println("명령어 똑바로 입력해.");
String[] split = cmd.split("=");
String id = split.length > 1 ? split[1] : "";
switch (cmd) {
case "등록":
doWrite();
break;
case "목록":
showList();
break;
default:
if (cmd.startsWith("삭제")) {
try {
doDelete(Integer.parseInt(id));
} catch (NumberFormatException e) {
System.out.println("번호 입력 요망.");
}
} else if (cmd.startsWith("수정")) {
try {
doModify(Integer.parseInt(id));
} catch (NumberFormatException e) {
System.out.println("번호 입력 요망.");
}
} else if (cmd.startsWith("상세보기")) {
try {
showDetail(Integer.parseInt(id));
} catch (NumberFormatException e) {
System.out.println("번호 입력 요망.");
}
} else System.out.println("명령어 오류");
break;
}
}
}
}
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import static org.koreait.App.*;
public class MotivationController {
static void showDetail(int id) {
Motivation found = foundMotivationId(id);
if (found == null) {
System.out.printf("%d번 명언은 존재하지 않습니다.\n", id);
} else {
System.out.println("번호 : " + found.getId());
System.out.println("날짜 : " + found.getRegDate());
System.out.println("작가 : " + found.getWriter());
System.out.println("내용 : " + found.getBody());
}
}
static void doModify(int id) {
Motivation found = foundMotivationId(id);
if (found == null) {
System.out.printf("%d번 명언은 존재하지 않습니다.\n", id);
} else {
System.out.println("명언(기존) : " + found.getBody());
System.out.println("작가(기존) : " + found.getWriter());
System.out.print("명언 : ");
String newBody = sc.nextLine().trim();
System.out.print("작가 : ");
String newWriter = sc.nextLine().trim();
found.setBody(newBody);
found.setWriter(newWriter);
}
}
static void doDelete(int id) {
Motivation found = foundMotivationId(id);
if (found == null) {
System.out.printf("%d번 명언은 존재하지 않습니다.\n", id);
} else {
motivations.remove(found);
System.out.printf("%d번 명언이 삭제되었습니다.\n", id);
}
}
private static Motivation foundMotivationId(int id) {
for (Motivation motivation : motivations) {
if (motivation.getId() == id) {
return motivation;
}
}
return null;
}
static void showList() {
if (motivations.isEmpty()) {
System.out.println("명언 없음.");
} else {
System.out.println("번호 / 작가 / 명언");
System.out.println("=".repeat(45));
for (int i = motivations.size() - 1; i >= 0; i--) {
Motivation motivation = motivations.get(i);
System.out.printf("%d / %s / %s\n", motivation.getId(), motivation.getWriter(), motivation.getBody());
}
}
}
static void doWrite() {
System.out.print("명언 ) ");
String body = sc.nextLine().trim();
System.out.print("작가 ) ");
String writer = sc.nextLine().trim();
int id = lastId++;
String dateTime = DateTimeFormatter.ofPattern("yy-MM-dd hh:mm:ss")
.format(LocalDateTime.now());
motivations.add(new Motivation(id, body, writer, dateTime));
System.out.printf("%d번 명언이 등록되었습니다.\n", id);
}
}
public class Motivation {
private int id;
private String body;
private String writer;
private String regDate;
public Motivation(int id, String body, String writer, String regDate) {
this.regDate = regDate;
this.id = id;
this.body = body;
this.writer = writer;
}
@Override
public String toString() {
return "Motivation{" +
"id=" + id +
", body='" + body + '\'' +
", writer='" + writer + '\'' +
", regDate='" + regDate + '\'' +
'}';
}
public String getRegDate() {
return regDate;
}
public void setRegDate(String regDate) {
this.regDate = regDate;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
}
공부한 보람이 있구만,, 아무튼 이렇게 제출 했고 아직도 시험은 보고 있어서 화장실을 못가는중이다. 틈새에 포스팅한다.
'Coding History' 카테고리의 다른 글
2024. 07. 09 JDBC Study (0) | 2024.07.09 |
---|---|
국비 지원 IT(웹앱개발) 취업반 강의 24일차 (JDBC) (0) | 2024.07.09 |
국비 지원 IT(웹앱개발) 취업반 강의 23일차 (JDBC) (1) | 2024.07.08 |
DB와 DBMS와 RDBMS를 알아보자 (0) | 2024.07.07 |
2024. 07. 05 쿼리문 기본 문제 풀이 (0) | 2024.07.05 |