인프런 커뮤니티 질문&답변

김병찬님의 프로필 이미지
김병찬

작성한 질문수

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

문제와 풀이3

섹션8_문제와풀이3

작성

·

230

0


범위가 아닌 값이 딱딱 떨어지는거면 switch문을 사용하는게 좋다고 강의시간에 들었습니다. 그래서 저는 switch 문으로 풀어봤습니다.

Q1 : switch 문에서 break는 이렇게 사용하는게 맞을까요? continue는 굳이 사용할 필요가 없을까요? switch 문에서 break랑 continue 적절히 쓰는법 알려주시면 감사합니다 !

Q2 : 가독성면에서는 어떤지도 피드백 부탁드립니다 !

package array.ex;

import java.util.Scanner;

public class ArrayEx10 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] productPrices = new int[10];
        String[] productNames = new String[10];
        int productCount = 0;

        while (true) {
            System.out.println("1. 상품 등록 | 2. 상품 목록 | 3. 종료");
            System.out.print("메뉴를 선택하세요 : ");
            int option = scanner.nextInt();
            scanner.nextLine();

            switch (option) {
                case 1 -> {
                    if (productCount < 10) {
                        System.out.print("상품 이름을 입력하세요 : ");
                        productNames[productCount] = scanner.nextLine();

                        System.out.print("상품 가격을 입력하세요 : ");
                        productPrices[productCount] = scanner.nextInt();

                        productCount++;
                    } else {
                        System.out.println("더 이상 상품을 등록할 수 없습니다.");
                    }
                    break;
                }
                case 2 -> {
                    if (productCount == 0) {
                        System.out.println("등록된 상품이 없습니다.");
                    } else {
                        for (int i = 0; i < productCount; i++) {
                            System.out.println(productNames[i] + " : " + productPrices[i] + "원");
                        }
                    }
                    break;
                }
                case 3 -> {
                    System.out.println("프로그램을 종료합니다.");
                    System.exit(0);
                }
                default -> {
                    System.out.println("올바른 메뉴가 아닙니다.");
                    break;
                }
            }
        }
    }
}

 

답변 1

1

안녕하세요. 김병찬님, 공식 서포터즈 y2gcoder입니다.

잘 작성하신 것 같습니다!

특히 break 문을 적극적으로 활용하신 것이 눈에 보이는데요. switch 문의 break는 switch 문만 종료해주기 때문에 밖의 while 문으로 돌아가 다시 루프가 반복되는 것을 기억해주십쇼!

option 3일 때는 프로그램을 종료해야 해서 System.exit(0)을 사용해주신 것으로 보입니다! 영한님께서 섹션 9의 문제 풀이에서 보여주시겠지만 return을 사용하면 해당 main 메서드를 종료할 수 있기 때문에 해당 코드와 동일한 효과를 보여줄 수 있다는 점도 기억해주십쇼!

if - else 구문을 이용해서 코드를 짜셨습니다! 개인적으로는 코드가 깔끔하다고 생각합니다! 영한님께서는 미리 productCount >= 10 이나 productCount == 0 과 같은 실패 조건을 먼저 처리하고, 조건에 해당할 때는 아래 로직을 타지 않도록 코드를 작성하셨습니다. 이런 작성법을 흔히 early return이라고 합니다. 이렇게 코드를 작성해놓으면 가독성이 좋아지는 효과도 있어 많이 사용하는 것 같습니다. 이런 부분도 참고해주십쇼!

감사합니다.

김병찬님의 프로필 이미지
김병찬

작성한 질문수

질문하기