아쉬운 점

주문 번호를 출력하려면 순서가 있어야 된다고 생각해서 ArrayList를 이용해 구현했는데 다른 컬렉션을 써봤으면 어땠을까 싶다. 과제의 필수 요구사항은 구현했으나 선택 요구사항은 구현하지 못했다. 내가 시도했던 선택 요구사항은 주문개수 기능 추가였는데,

위와 같이 유저가 장바구니에 같은 메뉴를 담으면 개수를 늘려서 출력하는 기능이다.

근데 ArrayList에서 중복 값을 찾으려면 Set이나 Map으로 변환을 해야 된다고 한다. 그래서 아예 처음부터 Map으로 설계했으면 어땠을까 싶다. 아직 Map이나 Set은 낯설어서 강의를 좀 더 듣고 연습도 해봐야겠다.

'TIL > WEEK3' 카테고리의 다른 글

예외처리  (0) 2023.05.31
개인과제 키오스크  (0) 2023.05.30

오늘의 삽질

오늘은 예외처리 강의를 들었는데 마침 지금 진행 중인 개인과제의 키오스크가 InputMismatchException을 다뤄보기 좋은 예제라 내가 짠 키오스크 코드로 예외처리에 도전해 봤다. 익셉션을 캐치하는 것까지는 잘 됐는데 catch 블락을 빠져나가면 프로그램을 그냥 끝내지 말고 다시 처음부터 실행시키고 싶어서 continue를 했더니 메인페이지에서 입력값은 안 받고 무한 루프되는 오류가 생겼다.. 

근데 마침 자바의 정석 8-7 연습문제가 이와 비슷한 케이스라 이걸로 먼저 연습해 보고 다시 도전해 봐야겠다.

 

연습문제 8-7

1~100 사이의 숫자를 맞추는 프로그램을 작성하시오. 예외처리를 해서 숫자가 아닌 값을 입력했을 때는 다시 입력을 받도록 하시오.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int answer = (int) (Math.random() * 100) + 1;
        int input = 0;
        int count = 0;

        do {
            count++;
            System.out.println("1과 100 사이의 값을 입력하세요 : ");

            // input = new Scanner(System.in).nextInt();
            try {
                Scanner sc = new Scanner(System.in);
                input = sc.nextInt();
            } catch (Exception e) {
                System.out.println("숫자를 입력해주세요.");
                continue;
            }

            if (answer > input) {
                System.out.println("더 큰 수를 입력하세요.");
            } else if (answer < input) {
                System.out.println("더 작은 수를 입력하세요.");
            } else {
                System.out.println("맞췄습니다.");
                System.out.println("시도 횟수는 " + count + "번입니다.");
                break;
            }

        } while (true);


    }
}

 

'TIL > WEEK3' 카테고리의 다른 글

개인과제 키오스크 완성  (0) 2023.06.01
개인과제 키오스크  (0) 2023.05.30

키오스크의 필수 기능(메뉴 선택, 취소, 장바구니에 넣기, 주문 취소, 주문완료)은 전부 구현했다.

 

오늘의 삽질!

 

1.  장바구니 상품 총 가격 오류

문제점 : 장바구니를 확인하고 다시 메인 메뉴로 돌아갔다 다시 장바구니 확인 창으로 돌아오면 장바구니에 넣어놓은 상품의 총가격이 두 배가 되는 오류가 발생

해결방안 : 총가격을 Order 클래스의 인스턴스 변수로 선언해놨더니 장바구니 확인 화면에서 나갔다가 다시 들어올 때마다 가격이 계속 더해져서 그런 오류가 발생했던 것 같다. 총가격을 지역변수로 바꾸고 메서드 첫줄에서 0으로 초기화 시켜줬더니 제대로 동작했다.

    public double getTotalPrice() {
        double totalPrice = 0.0;
        for(int i=0 ; i < order.size(); i++){
            totalPrice += order.get(i).price;
        }
        return totalPrice;
    }

 

2.  다중 중첩문의 continue

또 조건문과 반복문이 여러겹으로 중첩될 때 continue를 어떻게 써야 할지 잘 모르겠다. 사용자가 주문을 취소했을 때, 안쪽 루프에서 제일 바깥 루프로 가려고 메인 메뉴 루프에 라벨을 달고 continue 했더니 아래와 같은 경고가 떴다.

그래서 라벨을 지우고 그냥 컨틴뉴 해봤더니 이번엔 컨티뉴 자체가 불필요하단 경고창이 떴다;

아직 예외 처리부분 강의를 못 들었는데 아마 예외처리 강의에서 이런 부분도 다루지 않을까 싶다. 내일은 코딩보다 강의를 좀 들어봐야겠다.

 

 

'TIL > WEEK3' 카테고리의 다른 글

개인과제 키오스크 완성  (0) 2023.06.01
예외처리  (0) 2023.05.31

+ Recent posts