2023-06-13 TIL (Spring 학습, 키오스크 만들기 취소 기능 완성)
오늘 학습한 내용
- Spring 학습
- 키오스크 만들기 취소 기능
문제상황
어제 해결하지 못했던 취소 기능의 문제점을 다시 도전했다.
자세한 문제점은 어제 TIL에서 확인
https://bluescoding.tistory.com/83
2023-06-12 TIL (Spring 입문 학습, Java 키오스크 취소 기능)
오늘 학습한 내용 Spring 입문 학습 Java 키오스크 취소 기능 추가 프로그래머스 문풀 문제상황 내가 만든 키오스크 프로그램은 메뉴를 담는 리스트에 총 3개가 이용된다. 각각의 기능은 다음과 같
bluescoding.tistory.com
시도한 내용
여러 가지 방법을 시도하던 중에 list를 3개를 사용해야 하는 이유가 불명확하다는 사실을 깨달았다.
그래서 우선 2개로 줄인다음에 코드를 조금 수정했더니 오히려 코드도 간단해지고 불필요한 과정들이 사라졌다.
기존의 list였던 wish를 삭제하고
cntWish와 totalWish 둘만 사용하여 주문 데이터를 저장하는 방식으로 코드를 수정했다.
모든 방식이 통일되니 주문을 취소하는 상황에서도 여러 가지 경우의 수를 생각하지 않아도됐다.
cntWish에 있는 원소 중 주문 개수가 1개인 경우는 list의 원소를 remove하고, 2개 이상인 경우는 원하는 개수만큼 count에서 빼주면 됐다.
해결
구현한 코드는 다음과 같다.
if (Order.getCntWish().get(orderCancelNumber - 1).getCount() == 1) { // 주문 개수가 1개인 경우는 list에서 원소를 remove한다.
for (int i = 0; i < Order.getCntWish().size(); i++) {
if (orderCancelNumber == i + 1) {
System.out.println(Order.getCntWish().get(i).toString_cnt());
System.out.println("해당 주문을 취소했습니다.");
Order.getCntWish().remove(i);
break;
}
}
} else { // 주문 개수가 2개 이상인 경우는 list에서 cnt를 줄인다.
System.out.println(Order.getCntWish().get(orderCancelNumber - 1).toString_cnt());
System.out.println("몇 개를 취소하시겠습니까?");
System.out.print("여기에 개수를 입력해주세요. =>");
int CancelNumber = sc.nextInt();
if (Order.getCntWish().get(orderCancelNumber - 1).getCount() > CancelNumber && CancelNumber >= 0) {
Order.getCntWish().get(orderCancelNumber - 1).setCount(Order.getCntWish().get(orderCancelNumber - 1).getCount() - CancelNumber);
} else if (Order.getCntWish().get(orderCancelNumber - 1).getCount() == CancelNumber) {
Order.getCntWish().remove(orderCancelNumber - 1);
} else {
System.out.println("잘못된 입력입니다.");
}
아직 출력하는 화면이 완벽하지는 않지만 기능에는 크게 문제가 없는 것 같다.
알게된 내용
하루에 1시간 정도 Java를 까먹지 않으려고 혼자서 이것저것 추가를 하고 있는데 고민하는 시간을 가질 수 있고, 여러가지 경험을 할 수 있어서 좋은 것 같다.
얼른 원하는 기능들을 모두 구현하고, Spring을 배우면 Spring을 이용하여 실제 사용할 수 있는 키오스크 프로그램도 만들고 싶다.