오늘 학습한 내용
- Spring 입문 학습
- Java 키오스크 취소 기능 추가
- 프로그래머스 문풀
문제상황
내가 만든 키오스크 프로그램은 메뉴를 담는 리스트에 총 3개가 이용된다.
각각의 기능은 다음과 같다.
private static ArrayList<Product> wish = new ArrayList<Product>(); // default list
private static ArrayList<Product> cntWish = new ArrayList<>(); // count list
private static ArrayList<Product> totalWish = new ArrayList<Product>(); // total list
- 첫번째 wish는 메뉴를 담고, 비교해주는 list이다.
- 두번째 cntWish는 메뉴를 담을때, 비교하고 비교 결과에 따라서 개수를 추가하는 list이다.
- 세번째 totalWish는 마지막 추가 구현 기능인 총 판매금액과 총 판매상품 목록을 위한 list이다.
기존의 프로그램에서는 주문 취소 버튼을 누르게 되면 기존의 주문 목록이 전부 clear되는 방식이기 때문에 만약 주문 취소를 하게 되면 wish와 cntWish를 모두 clear()메소드를 활용하여 비워주기만 하면 끝이었다.
그러나 내가 바꾸고 싶었던 기능은 모든 주문을 취소하는 기능이 아니라 원하는 메뉴만을 삭제하고 다시 주문을 이어가는 방식으로 기능을 구현하고 싶었다.
기존의 방식과는 조금 다르기 때문에 여러가지를 시도해야했다.
시도한 내용
우선 처음 시도한 내용은 wish를 활용하여 낱개의 메뉴를 출력한다.
if(Order.getWish().size() == 0) {
System.out.println("\n================================================\n");
System.out.println("현재 장바구니가 비어있어서 취소할 주문이 없습니다.");
System.out.println("초기화면으로 돌아갑니다.\n");
delay(1000);
} else {
System.out.println("현재 주문한 내용은 다음과 같습니다.");
System.out.println("현재 까지의 주문 목록은 다음과 같습니다.");
System.out.println("[ Orders ]");
for (int j = 0; j < Order.getWish().size(); j++) {
System.out.println((j+1)+ ". " + Order.getWish().get(j).toString());
}
}
여기서 취소할 번호를 입력받고 해당 번호와 인덱스가 일치하는 list의 인덱스를 비교하여 remove해준다.
System.out.println("\n 취소할 주문의 번호를 입력해주세요.");
System.out.print("여기에 번호를 입력하세요 => ");
int orderCancelNumber = sc.nextInt();
for(int i = 0; i < Order.getWish().size(); i++) {
if(orderCancelNumber == i+1) {
System.out.println((i+1)+ ". " + Order.getWish().get(i).toString());
System.out.println("해당 주문을 취소했습니다.");
Order.getWish().remove(i);
break;
}
}
그런데 이 로직은 단순히 wish에 있는 원소만 지우기 때문에 cntWish에 있는 원소들은 그대로 유지가 된다. 즉, 실제 장바구니에 출력되는 내용에서는 취소된 내용이 반영이 되지 않는 것이다.
이를 해결하기 위해 cntWish에 있는 원소들도 지우는 로직을 구성했는데 이는 너무 난잡하고 끼워 맞추는 느낌이 너무 강해서 다른 방법을 생각할 필요가 있어 보였다.
이전에는 list를 세개를 사용하는 방법 밖에 생각이 안났었는데 사용하는 list를 줄이고 간결한 로직을 구성하는 방향으로 다시 고민을 해야겠다.
해결
아직 해결하지 못했다..
알게된 내용
조금 더 나은 방식을 찾는 과정은 정말 힘든 과정인 것 같다.
기존의 생각하던 방향을 바꿔야 보이는데 이 것은 정말 수학을 공부할 때도 그랬지만 알면서도 힘든 것 같다.
계속 고민하다보면 좋은 방법이 나올 것 같다. 더욱 고민해보자.
'TIL&WIL' 카테고리의 다른 글
| 2023-06-14 TIL (Spring 2주차 숙제) (0) | 2023.06.14 |
|---|---|
| 2023-06-13 TIL (Spring 학습, 키오스크 만들기 취소 기능 완성) (0) | 2023.06.13 |
| 2023-06 2주차 WIL (Java 팀 과제, 알고리즘 문풀) (0) | 2023.06.11 |
| 2023-06-11 TIL (Java : 키오스크 프로그램 전반적인 구성 바꾸기) (0) | 2023.06.11 |
| 2023-06-10 TIL (프로그래머스 문풀) (0) | 2023.06.10 |