본문 바로가기
TIL & WIL

[TIL] #36. 231019

by mmm- 2023. 10. 19.

어제 목표 & 오늘 완료한 한 일 

  • 알고리즘 문제
  • 자바 개인과제 → 진행중
  • 자바 종합 강의 복습 (1주차)


내일 목표

  • 알고리즘 문제
  • 자바 개인과제
  • 자바 종합 강의 복습 (2주차)

 

발생한 문제와 해결

1️⃣ 원래는 getName()을 하면 각각의 이름이 출력됐는데, package를 생성해 원래 있던 파일을 그 곳에 다 넣었더니 getName을 했을 때 이름이 제대로 나오지 않았다. 왜 그런가 하고 봤더니 내가 package를 생성하기 전 Menu 클래스에 선언되어 있는 name 변수를 다른 파일에서 사용하기 위해서 static 으로 작성해놓은 상태여서 그런것이었다. 그래서 static을 지우니 정상적으로 동작하였다.

 

2️⃣ 메뉴를 선택했을 때 printCartCheck라는 메서드로 해당하는 메뉴의 리스트를 매개변수로 넘겨주면 어떤 음식의 메뉴를 넘기든 해당 메서드가 동작하게 하고 싶어 아래와 같이 코드를 수정하였다.

// PrintMenu.java
public static void printCartCheck(int menuNumber, Products productsList) { // 장바구니에 추가할지 물어보는 질문 출력
        Menu menu = new Menu();
        Stream<Products> inputProduct = productsList.stream() // 사용자가 입력한 번호와 일치하면
                .filter(product -> product.getNumber() == menuNumber);
        inputProduct.forEach(product -> {
            System.out.println("\"" + product.getName() // 해당 부분 출력
                    + " | W " + product.getPrice() + " | " + product.getExplanation());

            System.out.println("위 메뉴를 장바구니에 추가하시겠습니까?");
            System.out.println("1. 확인        2. 취소");

            menu.selectAddCart(product.getName());
        });
    }

 

// Menu.java
public void selectDrinksMenu() { // 음료메뉴 선택
        PrintMenu.printSelectedDrinks(); // 메뉴 보여주기
        int drinkNumber = sc.nextInt(); // 입력받기

        switch(drinkNumber) {
            case 1:
                PrintMenu.printCartCheck(drinkNumber, (Products)Order.drinkList);
                System.out.println();
                break;
            case 2:
                break;
            case 3:
                break;
            case 4:
                break;
            case 5:
                break;
        }
    }

코드 수정 전, Products.burgerList.stream()으로 작성했을 때는 문제없던 부분이 productsList.stream으로 변경하니까

Cannot resolve method 'stream' in 'Products'

위와 같은 에러가 발생했는데 이러한 이유가 발생한 이유를 모르겠어 튜터님께 여쭤봤다.

printCartCheck의 매개변수가 Products로 선언되어 있어 값이 하나만 넘어오는데, 값이 하나만 넘어오게 되면 stream()으로 받을 수 없어 그런 것이라고 말씀하셨다. 에러로 인해 형변환을 하기 위해 작성했던 (Products) 부분과 매개변수 선언 부분을 List<Products>로 수정해주었더니 문제가 해결되었다.

내가 Products로 형변환했던 이유는 Cast 2nd argument to 'Products'와 같은 에러가 발생해서 그런 것이었다.

내가 생각할 때 그러한 에러가 발생한 이유는 리스트를 넘겨줬는데 매개변수는 하나만 받는다고 선언해 데이터 타입이 일치하지 않아서 그런 것 같다.

 

느낀점

오늘 알고리즘 문제는 풀다보니 이중for문을 써버려서 for문을 한개만 쓰게끔 수정하고 싶었다. 그래서 다른 방법은 없을지 오랫동안 생각을 해봤다. 그런데 딱히 생각이 나질 않아 채점을 했더니 실행시간이.. 충격적이었다. 풀면서 다른 사람은 코드를 어떻게 작성했을지 너무 궁금했다. 채점 후 다른 사람의 코드를 보고 내가 부족하다는 걸 다시 한 번 느꼈다. 알고리즘 공부를 더 할 필요가 있을 것 같다.

 

개인과제를 시작한지 2일째이다. 처음에는 잘할 수 있을지 걱정됐는데, 점점 할 수 있다는 자신감이 생기고 있다. 필수 요구사항 문제없이 모두 구현할 뿐만 아니라 선택 요구사항까지 완벽히 구현한 후 코드도 수정에 용이하고 효율적인 코드를 작성하고 싶다.

 

 

'TIL & WIL' 카테고리의 다른 글

[TIL] #38. 231021  (0) 2023.10.21
[TIL] #37. 231020  (0) 2023.10.20
[TIL] #35. 231018  (0) 2023.10.19
[TIL] #34. 231017  (0) 2023.10.17
[TIL] #33. 231016  (0) 2023.10.16